Commit 829ba167 authored by m0sa's avatar m0sa

build.ps1 must work with dotnet msbuild

parent 70bbb472
......@@ -17,10 +17,10 @@
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' ">
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -16,16 +16,16 @@
<PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<Reference Include="System.Configuration">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -13,16 +13,16 @@
<PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<Reference Include="System.Configuration">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -15,10 +15,10 @@
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' ">
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.EntityFramework.Stro
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.Tests.Performance", "Dapper.Tests.Performance\Dapper.Tests.Performance.csproj", "{F017075A-2969-4A8E-8971-26F154EB420F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.FrameworkAssemblyPacker", "NuGet.FrameworkAssemblyPacker\NuGet.FrameworkAssemblyPacker.csproj", "{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -84,6 +86,10 @@ Global
{F017075A-2969-4A8E-8971-26F154EB420F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F017075A-2969-4A8E-8971-26F154EB420F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F017075A-2969-4A8E-8971-26F154EB420F}.Release|Any CPU.Build.0 = Release|Any CPU
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -99,5 +105,6 @@ Global
{8A74F0B6-188F-45D2-8A4B-51E4F211805A} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB}
{39D3EEB6-9C05-4F4A-8C01-7B209742A7EB} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB}
{F017075A-2969-4A8E-8971-26F154EB420F} = {568BD46C-1C65-4D44-870C-12CD72563262}
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB}
EndGlobalSection
EndGlobal
......@@ -11,13 +11,13 @@
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' ">
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -9,13 +9,13 @@
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' ">
<Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System.Xml.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly>
<PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference>
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
......
......@@ -27,72 +27,15 @@
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
<DefineConstants>$(DefineConstants);ASYNC;COREFX</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SourceLink.Create.GitHub" Version="2.0.2" PrivateAssets="All" />
<DotNetCliToolReference Include="dotnet-sourcelink" Version="2.0.2" />
<DotNetCliToolReference Include="dotnet-sourcelink-git" Version="2.0.2" />
</ItemGroup>
<!--
This is a temporary workaround for Nuget Issue #4853 - https://github.com/NuGet/Home/issues/4853#issuecomment-292719597
Ideally this belongs into Directory.build.targets, but that doesn't work either - https://github.com/Microsoft/msbuild/issues/1721
-->
<Target Name="_CleanNuSpec">
<PropertyGroup>
<_NuSpecPrefix>$(MSBuildProjectDirectory)\$(BaseIntermediateOutputPath)$(MSBuildProjectName).$(PackageVersion)</_NuSpecPrefix>
<_NuSpec>$(_NuSpecPrefix).nuspec</_NuSpec>
<_NuSpecPatched>$(_NuSpecPrefix).patched.nuspec</_NuSpecPatched>
</PropertyGroup>
<Delete Files="$(_NuSpec)" Condition="Exists('$(_NuSpec)')" />
<Delete Files="$(_NuSpecPatched)" Condition="Exists('$(_NuSpecPatched)')" />
</Target>
<Target Name="_ExtractReferences">
<ItemGroup>
<_ExtractReferenceTarget Include="$(TargetFrameworks)" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="ExtractReferencesPerTarget" Properties="TargetFramework=%(_ExtractReferenceTarget.Identity)">
<Output TaskParameter="TargetOutputs" ItemName="_Reference" />
</MSBuild>
</Target>
<Target Name="ExtractReferencesPerTarget" Outputs="@(_AssemblyReference)">
<ItemGroup>
<_AssemblyReference Include="@(Reference)" Condition="'%(Reference.NuSpecFrameworkAssembly)' == 'true'">
<NuSpecFrameworkAssembly>$(TargetFramework)</NuSpecFrameworkAssembly>
</_AssemblyReference>
</ItemGroup>
</Target>
<UsingTask TaskName="AddFrameworkAssemblies" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
<ParameterGroup>
<NuSpecFile ParameterType="System.String" Required="true" />
<PatchedNuSpecFile ParameterType="System.String" Required="true" />
<References ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs"><![CDATA[
var content = System.IO.File.ReadAllText(NuSpecFile);
var end = content.IndexOf("</metadata>");
var newContent = content.Substring(0, end);
newContent += "<frameworkAssemblies>\n";
foreach (var r in References)
{
var targetFrameworksStr = r.GetMetadata("NuSpecFrameworkAssembly");
foreach (var targetFramework in (targetFrameworksStr ?? "").Split(new char[] {',', ' ', ';'}, System.StringSplitOptions.RemoveEmptyEntries))
{
newContent += " <frameworkAssembly assemblyName=\"" + r.ItemSpec + "\" targetFramework=\"" + targetFramework + "\" />\n";
}
}
newContent += " </frameworkAssemblies>\n ";
newContent += content.Substring(end);
File.WriteAllText(PatchedNuSpecFile, newContent);
]]></Code>
</Task>
</UsingTask>
<Target Name="PackWithFrameworkAssemblies" DependsOnTargets="_CleanNuSpec;_ExtractReferences;Pack" Condition="'$(IsPackable)' == 'true'">
<Message Text="Repackaging -> '$(MSBuildProjectName)' from '$(_NuSpecPatched)'" Importance="high" Condition=" '@(_Reference)' != '' " />
<AddFrameworkAssemblies NuSpecFile="$(_NuSpec)" PatchedNuSpecFile="$(_NuSpecPatched)" References="@(_Reference)" Condition=" '@(_Reference)' != '' " />
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Pack" Properties="NuspecFile=$(_NuSpecPatched)" Condition=" '@(_Reference)' != '' " />
</Target>
<PropertyGroup>
<FrameworkAssemblyPacker>$(MSBuildThisFileDirectory)\NuGet.FrameworkAssemblyPacker\bin\$(Configuration)\netstandard1.3\NuGet.FrameworkAssemblyPacker.targets</FrameworkAssemblyPacker>
</PropertyGroup>
<Import Project="$(FrameworkAssemblyPacker)" Condition=" '$(IsPackable)' != 'false' AND Exists('$(FrameworkAssemblyPacker)')" />
</Project>
\ No newline at end of file
using System;
using System.IO;
using Microsoft.Build.Framework;
namespace NuGet.FrameworkAssemblyPacker
{
public class AddFrameworkAssemblies : Microsoft.Build.Utilities.Task
{
[Required]
public string NuSpecFile { get; set; }
[Required]
public string PatchedNuSpecFile { get; set; }
[Required]
public ITaskItem[] FrameworkAssemblies { get; set; }
public override bool Execute()
{
var content = File.ReadAllText(NuSpecFile);
if (content.IndexOf("<frameworkAssemblies>", StringComparison.Ordinal) >= 0)
{
Log.LogWarning("'{0}' already contains a frameworkAssemblies element, you can probably don't need the NuGet.FrameworkAssemblyPacker package", NuSpecFile);
return false;
}
var end = content.IndexOf("</metadata>", StringComparison.Ordinal);
var newContent = content.Substring(0, end);
newContent += "<frameworkAssemblies>\n";
foreach (var r in FrameworkAssemblies ?? new ITaskItem[0])
{
var targetFramework = r.GetMetadata("TargetFramework");
if (string.IsNullOrEmpty(targetFramework))
{
continue;
}
newContent += " <frameworkAssembly assemblyName=\"" + r.ItemSpec + "\" targetFramework=\"" + targetFramework + "\" />\n";
}
newContent += " </frameworkAssemblies>\n ";
newContent += content.Substring(end);
File.WriteAllText(PatchedNuSpecFile, newContent);
return true;
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<MinClientVersion>4.0</MinClientVersion>
<IsTool>true</IsTool>
<DevelopmentDependency>true</DevelopmentDependency>
<DebugType>embedded</DebugType>
<IsPackable>false</IsPackable>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Content Include="NuGet.FrameworkAssemblyPacker.targets">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.1.1012" />
</ItemGroup>
</Project>
\ No newline at end of file
<Project>
<Target Name="_ExtractReferences">
<ItemGroup>
<_ExtractReferenceTarget Include="$(TargetFrameworks)" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_ExtractReferencesPerTarget" Properties="TargetFramework=%(_ExtractReferenceTarget.Identity)">
<Output TaskParameter="TargetOutputs" ItemName="_FrameworkAssembly" />
</MSBuild>
</Target>
<Target Name="_ExtractReferencesPerTarget" Outputs="@(_FrameworkAssembly)">
<ItemGroup>
<_FrameworkAssembly Include="@(Reference)" Condition="'%(Reference.PackAsFrameworkAssembly)' == 'true'">
<TargetFramework>$(TargetFramework)</TargetFramework>
</_FrameworkAssembly>
</ItemGroup>
</Target>
<UsingTask
TaskName="NuGet.FrameworkAssemblyPacker.AddFrameworkAssemblies"
AssemblyFile="$(MSBuildThisFileDirectory)\NuGet.FrameworkAssemblyPacker.dll" />
<Target Name="PackWithFrameworkAssemblies" DependsOnTargets="_ExtractReferences;$(PackDependsOn)" AfterTargets="Pack" Condition="'$(IsPackable)' == 'true'">
<PropertyGroup>
<_NuSpecPrefix>$(MSBuildProjectDirectory)\$(BaseIntermediateOutputPath)$(MSBuildProjectName).$(PackageVersion)</_NuSpecPrefix>
<_NuSpec>$(_NuSpecPrefix).nuspec</_NuSpec>
<_NuSpecPatched>$(_NuSpecPrefix).patched.nuspec</_NuSpecPatched>
</PropertyGroup>
<Message Text="Repackaging -> '$(MSBuildProjectName)' from '$(_NuSpecPatched)'" Importance="high" Condition=" '@(_FrameworkAssembly)' != '' " />
<AddFrameworkAssemblies NuSpecFile="$(_NuSpec)" PatchedNuSpecFile="$(_NuSpecPatched)" FrameworkAssemblies="@(_FrameworkAssembly)" Condition=" '@(_FrameworkAssembly)' != '' " />
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Pack" Properties="NuspecFile=$(_NuSpecPatched)" Condition=" '@(_FrameworkAssembly)' != '' " />
</Target>
</Project>
\ No newline at end of file
......@@ -7,7 +7,7 @@ $packageOutputFolder = "$PSScriptRoot\.nupkgs"
# Restore packages and build product
Write-Host "Building..." -ForegroundColor "Green"
msbuild "$PSScriptRoot\Dapper.sln" /m /v:m /nologo "/t:Restore;Build" /p:Configuration=Debug "/p:PackageVersionSuffix=$PreReleaseSuffix"
dotnet msbuild "$PSScriptRoot\Dapper.sln" /m /v:m /nologo "/t:Restore;Build" /p:Configuration=Debug "/p:PackageVersionSuffix=$PreReleaseSuffix"
# Run tests
if ($SkipTests)
......@@ -25,4 +25,4 @@ else
# Package all
Write-Host "Packaging..." -ForegroundColor "Green"
msbuild "$PSScriptRoot\Dapper.sln" /m /v:m /nologo "/t:Build;PackWithFrameworkAssemblies" /p:Configuration=Release "/p:PackageOutputPath=$packageOutputFolder" "/p:PackageVersionSuffix=$PreReleaseSuffix"
\ No newline at end of file
dotnet msbuild "$PSScriptRoot\Dapper.sln" /m /v:m /nologo "/t:Restore;Build;Pack" /p:Configuration=Release "/p:PackageOutputPath=$packageOutputFolder" "/p:PackageVersionSuffix=$PreReleaseSuffix"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment