Commit 829ba167 authored by m0sa's avatar m0sa

build.ps1 must work with dotnet msbuild

parent 70bbb472
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' ">
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data.Linq"> <Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
<PackageReference Include="EntityFramework" Version="6.1.3" /> <PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" /> <PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<Reference Include="System.Configuration"> <Reference Include="System.Configuration">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data.Linq"> <Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -13,16 +13,16 @@ ...@@ -13,16 +13,16 @@
<PackageReference Include="EntityFramework" Version="6.1.3" /> <PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" /> <PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<Reference Include="System.Configuration"> <Reference Include="System.Configuration">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data.Linq"> <Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' ">
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Data.Linq"> <Reference Include="System.Data.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.EntityFramework.Stro ...@@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.EntityFramework.Stro
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.Tests.Performance", "Dapper.Tests.Performance\Dapper.Tests.Performance.csproj", "{F017075A-2969-4A8E-8971-26F154EB420F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapper.Tests.Performance", "Dapper.Tests.Performance\Dapper.Tests.Performance.csproj", "{F017075A-2969-4A8E-8971-26F154EB420F}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.FrameworkAssemblyPacker", "NuGet.FrameworkAssemblyPacker\NuGet.FrameworkAssemblyPacker.csproj", "{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
...@@ -84,6 +86,10 @@ Global ...@@ -84,6 +86,10 @@ Global
{F017075A-2969-4A8E-8971-26F154EB420F}.Debug|Any CPU.Build.0 = Debug|Any CPU {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.ActiveCfg = Release|Any CPU
{F017075A-2969-4A8E-8971-26F154EB420F}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
...@@ -99,5 +105,6 @@ Global ...@@ -99,5 +105,6 @@ Global
{8A74F0B6-188F-45D2-8A4B-51E4F211805A} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB} {8A74F0B6-188F-45D2-8A4B-51E4F211805A} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB}
{39D3EEB6-9C05-4F4A-8C01-7B209742A7EB} = {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} {F017075A-2969-4A8E-8971-26F154EB420F} = {568BD46C-1C65-4D44-870C-12CD72563262}
{F50ECE3D-EB6C-4DC0-AAEA-B9423AB03BE2} = {4E956F6B-6BD8-46F5-BC85-49292FF8F9AB}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' ">
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml.Linq"> <Reference Include="System.Xml.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' ">
<Reference Include="System.Data"> <Reference Include="System.Data">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System.Xml.Linq"> <Reference Include="System.Xml.Linq">
<NuSpecFrameworkAssembly>true</NuSpecFrameworkAssembly> <PackAsFrameworkAssembly>true</PackAsFrameworkAssembly>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
......
...@@ -27,72 +27,15 @@ ...@@ -27,72 +27,15 @@
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' "> <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
<DefineConstants>$(DefineConstants);ASYNC;COREFX</DefineConstants> <DefineConstants>$(DefineConstants);ASYNC;COREFX</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="SourceLink.Create.GitHub" Version="2.0.2" PrivateAssets="All" /> <PackageReference Include="SourceLink.Create.GitHub" Version="2.0.2" PrivateAssets="All" />
<DotNetCliToolReference Include="dotnet-sourcelink" Version="2.0.2" /> <DotNetCliToolReference Include="dotnet-sourcelink" Version="2.0.2" />
<DotNetCliToolReference Include="dotnet-sourcelink-git" Version="2.0.2" /> <DotNetCliToolReference Include="dotnet-sourcelink-git" Version="2.0.2" />
</ItemGroup> </ItemGroup>
<!-- <PropertyGroup>
This is a temporary workaround for Nuget Issue #4853 - https://github.com/NuGet/Home/issues/4853#issuecomment-292719597 <FrameworkAssemblyPacker>$(MSBuildThisFileDirectory)\NuGet.FrameworkAssemblyPacker\bin\$(Configuration)\netstandard1.3\NuGet.FrameworkAssemblyPacker.targets</FrameworkAssemblyPacker>
Ideally this belongs into Directory.build.targets, but that doesn't work either - https://github.com/Microsoft/msbuild/issues/1721 </PropertyGroup>
--> <Import Project="$(FrameworkAssemblyPacker)" Condition=" '$(IsPackable)' != 'false' AND Exists('$(FrameworkAssemblyPacker)')" />
<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>
</Project> </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" ...@@ -7,7 +7,7 @@ $packageOutputFolder = "$PSScriptRoot\.nupkgs"
# Restore packages and build product # Restore packages and build product
Write-Host "Building..." -ForegroundColor "Green" 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 # Run tests
if ($SkipTests) if ($SkipTests)
...@@ -25,4 +25,4 @@ else ...@@ -25,4 +25,4 @@ else
# Package all # Package all
Write-Host "Packaging..." -ForegroundColor "Green" 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" 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 \ 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