2017-06-09 66 views
0

我正在使用VS2017和新的csproj文件格式來創建nuget包。如何將<frameworkAssembly>添加到從csproj生成的nuget包中

在我的csproj文件,我有以下幾點:

<ItemGroup> 
    <Reference Include="System.Net" /> 
</ItemGroup> 

當你建立了哪些工作正常(TargetFrameworks == net45)。但是,當我在NuGet包收拾它,我想目標包把它作爲

<frameworkAssemblies> 
    <frameworkAssembly assemblyName="System.Net" targetFramework="net45" /> 
</frameworkAssemblies> 

我怎麼做這個新的工具?

回答

1

這是當前1.0.*模具的限制。在即將推出的版本1.1.*2.0.*版本的「.NET SDK」中,這將自動完成,所有<Reference>元素都作爲框架程序集添加到生成的NuGet包(除非它們標記爲Pack="false")。這些變化也將成爲VS 2017 15.3的一部分(在撰寫本文時尚未發佈)。請注意,我正在討論這些工具(安裝了SDK的dotnet --version)版本,而不是.NET Core運行時版本。

有一種方法可以使用包目標的當前預覽包,覆蓋SDK提供的預覽包 - 請注意,這是一種非常冒險的方式,應該在使用新的1.1或2.0工具後將其刪除。

<Project> 
    <PropertyGroup> 
    <NuGetBuildTasksPackTargets>junk-value-to-avoid-conflicts</NuGetBuildTasksPackTargets> 
    </PropertyGroup> 
    <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> 

    <!-- All your project's other content here --> 

    <ItemGroup> 
    <PackageReference Include="NuGet.Build.Tasks.Pack" Version="4.3.0-preview1-4045" PrivateAssets="All" /> 
    </ItemGroup> 
    <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> 
</Project> 

另請參閱related GitHub issue on the NuGet repo此解決方案的信息源於此。

相關問題