C# 如何为解决方案中的每个项目创建一个单独的nuget包,并将项目引用转换为nuget依赖项?
我有一个这样的解决方案 我想为ProjA、ProjB和ProjC生成单独的nuget包,我希望这个过程能够检测ProjC中上面显示的项目引用,并将它们转换为NUPEC文件中的nuget依赖项,而不仅仅是在ProjC nuget包中包含ProjA和ProjB的DLL,这就是我在使用带有-IncludeReferencedProjects选项的“nuget-pack”命令时发生的情况 此选项表示自动包含文件或将其作为依赖项添加,但始终包含它们,即使我希望将它们作为依赖项添加。奇怪的是,在我的realword解决方案中,一个项目引用总是作为依赖项添加,但其他项目引用却没有,我无法找出区别 我如何告诉nuget将它们添加为依赖项 我希望引用是项目引用,因为这使开发更容易,而不是每次需要测试时都必须生成更新的本地nuget包 但始终包括它们,即使我希望它们作为一个整体添加 附属国。我如何告诉nuget将它们添加为依赖项 假设您使用的是C# 如何为解决方案中的每个项目创建一个单独的nuget包,并将项目引用转换为nuget依赖项?,c#,.net,visual-studio,nuget,C#,.net,Visual Studio,Nuget,我有一个这样的解决方案 我想为ProjA、ProjB和ProjC生成单独的nuget包,我希望这个过程能够检测ProjC中上面显示的项目引用,并将它们转换为NUPEC文件中的nuget依赖项,而不仅仅是在ProjC nuget包中包含ProjA和ProjB的DLL,这就是我在使用带有-IncludeReferencedProjects选项的“nuget-pack”命令时发生的情况 此选项表示自动包含文件或将其作为依赖项添加,但始终包含它们,即使我希望将它们作为依赖项添加。奇怪的是,在我的rea
nuget-pack
命令,而不是dotnet-pack
或msbuild/t:pack
对于nuget pack xx.csproj-IncludeReferencedProjects
命令,要确保引用的项目包含在ProjC
包中,且格式为nuget dependency
,应在引用的项目文件夹中添加相应的xx.nuspec
文件
请参见IncludeReferencedProjects
的说明:如果引用的项目具有与该项目同名的相应.nuspec
文件,则该引用的项目将作为依赖项添加。否则,引用的项目将作为包的一部分添加
这里是解决方法:
1.对于我,我打开cmd.exe
并导航到ProjA或ProjB的项目文件夹,使用nuget sepc
命令在项目文件夹中为我创建一个ProjectName.nuspec
2.将ProjA.nuspec
的内容更改为如下内容:
<?xml version="1.0"?>
<package >
<metadata>
<id>ProjA</id>
<version>1.0.0</version>
<title>This is title.</title>
<authors>This is author.</authors>
<owners>These are owners.</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is description.</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2019</copyright>
</metadata>
</package>
将项目更改为“sdk样式”(通过创建新的.net核心项目和将TargetFramework更改为net48实现fx)请参见IncludeReferencedProject的说明:
如果引用的项目具有与该项目同名的对应.nuspec文件,则该引用的项目将作为依赖项添加。否则,引用的项目将作为包的一部分添加
。因此,只有在相应的项目文件夹中添加ProjA.nuspec
和ProjB.nuspec
时,才能nuget pack
命令将ProjA
和ProjB
识别为nuget包。在这种情况下,IncludeReferencedProjects
将按照您的预期将它们添加为nuget依赖项。。。除此之外,我们还可以选择创建一个ProjC.nuspec并在那里手动定义nuget依赖项。只需登录查看此问题是否已解决,如果您需要任何进一步的帮助,请随时通知我。
<dependencies>
<dependency id="ProjA" version="1.0.0" />
<dependency id="ProjB" version="1.0.0" />
</dependencies>
</metadata>