Visual Studio 2017 Nuget 包排除项目引用作为另一个 nuget 引用,改为添加程序集 [英] Visual Studio 2017 Nuget pack exclude Project reference as another nuget reference, add assembly instead
问题描述
当我们在 Visual Studio 2017 中创建 nuget 包时,它默认将项目引用添加为另一个 nuget 引用.我们如何在创建包时禁用它,而是:
When we create a nuget package in visual studio 2017, it adds the project references as another nuget reference by default. How can we disable that while creating package and instead:
- 选择不同的包名
- 在创建包时包含项目的 dll
推荐答案
PackageReference
可以用 PrivateAssets="All"
标记以确保它不会结束打包时作为消费库的 NuGet 依赖项.然后消费库可以使用自定义目标将文件添加到构建的 nuget 包中.csproj
文件的完整示例如下所示:
The PackageReference
can be marked with PrivateAssets="All"
to ensure that it doesn't end up as a NuGet dependency of the consuming library when packed. Then the consuming library can use a custom target to add files to the built nuget package. A full example for the csproj
file could look like this:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\testprivatelib\testprivatelib.csproj" PrivateAssets="All" />
</ItemGroup>
<Target Name="IncludeP2PAssets">
<ItemGroup>
<BuildOutputInPackage Include="$(OutputPath)\testprivatelib.dll" />
</ItemGroup>
</Target>
</Project>
其中 testprivatelib.csproj
是一个构建 DLL 的项目,您希望将其额外包含到 .nupkg
文件中,并且不为该引用的项目发布额外的 NuGet 包.
Where testprivatelib.csproj
is a project that builds a DLL that you want to additionally include into the .nupkg
file and not publish an extra NuGet package for that referenced project.
指定不同的 NuGet 包比较困难.它需要手动创建一个 .nuspec
文件,使用它来打包 NuGet 包.您可以在 https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA - LibA.csproj
设置为使用 LibA.nuspec
当 dotnet pack
被调用时.
Specifying different NuGet packages is more difficult. It requires manually creating a .nuspec
file using it to pack a NuGet package. You can see an example how this can be done at https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA - the LibA.csproj
is set up to use LibA.nuspec
when dotnet pack
is called.
这篇关于Visual Studio 2017 Nuget 包排除项目引用作为另一个 nuget 引用,改为添加程序集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!