jbt*_*ule 3 c# msbuild .net-4.0 portable-class-library
这非常令人沮丧,我有一个可移植类库(PCL)库,它必须在配置文件中删除.NET 4.0才能访问正确的API"在PCL中".但是,这些API确实存在于.NET 4.0中,因此如果完全相同的代码在.NET 4.0项目中,则编译就可以了.
我想要一个最小的持续维护方法来重新编译这个PCL项目中的代码到.net 4.0,所以我可以将它包含在Nuget包中.
通过对条件进行最小的条件调整.csproj,可以创建一个msbuild项目来编译可移植的库解决方案,以生成其他.net 4.0配置文件二进制文件.
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectToBuild Include="MyPortableSolution.sln">
<Properties>Configuration=Release;</Properties>
</ProjectToBuild>
<ProjectToBuild Include="MyPortableSolution.sln">
<Properties>Configuration=Release;OutputPath=bin\Release.net40\;IntermediateOutputPath=obj\Release.net40\;UseNet40=true;</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
首先替换:
<TargetFrameworkProfile>Profile46</TargetFrameworkProfile>
Run Code Online (Sandbox Code Playgroud)
附:
<UseNet40 Condition=" '$(UseNet40)' == '' ">false</UseNet40>
<TargetFrameworkProfile Condition="$(UseNet40) == false">Profile46</TargetFrameworkProfile>
Run Code Online (Sandbox Code Playgroud)
第二次替换:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
附:
<Import Condition="$(UseNet40) == true" Project="$(SolutionDir)\refs.targets" />
<Import Condition="$(UseNet40) == true" Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Condition="$(UseNet40) == false" Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
refs.targets这是一个包含您需要的程序集引用的文件(从项目到项目编辑):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Reference Include="mscorlib" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
注意:使用单独的文件,因为Visual Studio会解析并显示它.
这将创建您的便携式lib bin\Release和.net 40特定的libbin\Release.net40
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |