Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为解决方案中的每个项目创建一个单独的nuget包,并将项目引用转换为nuget依赖项?_C#_.net_Visual Studio_Nuget - Fatal编程技术网

C# 如何为解决方案中的每个项目创建一个单独的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

我有一个这样的解决方案

我想为ProjA、ProjB和ProjC生成单独的nuget包,我希望这个过程能够检测ProjC中上面显示的项目引用,并将它们转换为NUPEC文件中的nuget依赖项,而不仅仅是在ProjC nuget包中包含ProjA和ProjB的DLL,这就是我在使用带有-IncludeReferencedProjects选项的“nuget-pack”命令时发生的情况

此选项表示自动包含文件或将其作为依赖项添加,但始终包含它们,即使我希望将它们作为依赖项添加。奇怪的是,在我的realword解决方案中,一个项目引用总是作为依赖项添加,但其他项目引用却没有,我无法找出区别

我如何告诉nuget将它们添加为依赖项

我希望引用是项目引用,因为这使开发更容易,而不是每次需要测试时都必须生成更新的本地nuget包

但始终包括它们,即使我希望它们作为一个整体添加 附属国。我如何告诉nuget将它们添加为依赖项

假设您使用的是
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>