我正在使用VS2017和新的csproj文件格式来创建nuget包。
在我的csproj文件中,我有以下内容:
<ItemGroup>
<Reference Include="System.Net" />
</ItemGroup>
构建它时,哪个工作正常(TargetFrameworks == net45)。但是当我将它打包在nuget包中时,我希望目标包将其作为
<frameworkAssemblies>
<frameworkAssembly assemblyName="System.Net" targetFramework="net45" />
</frameworkAssemblies>
我如何使用这种新工具做到这一点?
答案 0 :(得分:1)
这是当前1.0.*
工具的限制。在即将推出的&#34; .NET SDK&#34;版本1.1.*
和2.0.*
版本中,这将自动完成,所有<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此变通办法的信息源自哪里。