2017-06-09 30 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此解决方案的信息源于此。

相关问题