首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建多个Nuspec文件

创建多个Nuspec文件
EN

Stack Overflow用户
提问于 2013-11-19 18:51:30
回答 1查看 1.9K关注 0票数 4

目前,我正试图为这个解决方案中的所有项目发布大量nuget包。这些项目是在一个简单的树中设置的,Myre是基础项目,一切都取决于它:

代码语言:javascript
复制
Myre <- Myre.Debugging <- Myre.Debugging.UI <- Myre.UI
Myre <- Myre.UI
Myre <- Myre.Entities <- Myre.Graphics

我试图将每个单独的项目打包为nuget包,并在必要时对其他Myre子项目包具有正确的依赖关系。

我的第一步是为迈尔 (努斯派克bat工艺文件)制作一个包。这似乎是很好的工作,画廊显示Myre有一个九目标(另一个nuget包)的依赖,一切都很好。

当我试着做下一个包裹时,问题就来了。Myre.Debugging依赖于Myre (具有正常的项目引用),而不是其他任何东西。使用这个新台币和nuget (详细)提供:

代码语言:javascript
复制
Attempting to build package from '(x86) Myre.Debugging.csproj'.
Packing files from 'C:\Long_Path\Myre\Myre.Debugging\bin\x86\Release'.
Add file 'C:\Long_Path\Myre\Myre.Debugging\bin\x86\Release\Myre.Debugging.dll' to package as 'lib\net40-Client\Myre.Debugging.dll'
Add file 'C:\Long_Path\Myre\Myre\bin\x86\Release\Myre.dll' to package as 'lib\net40-Client\Myre.dll'
Add file 'C:\Long_Path\Myre\Myre\bin\x86\Release\Myre.XML' to package as 'lib\net40-Client\Myre.XML'
Found packages.config. Using packages listed as dependencies

Id: Myre.Debugging
Version: 1.0.0.2
Authors: Microsoft
Description: Description
Dependencies: Ninject (= 3.0.1.10)

Added file 'lib\net40-Client\Myre.Debugging.dll'.
Added file 'lib\net40-Client\Myre.dll'.
Added file 'lib\net40-Client\Myre.XML'.

Successfully created package 'C:\Long_Path\Myre\Myre.Debugging\Myre.Debugging.1.0.0.2.nupkg'.

如您所见,它获取一个packages.config文件(可能来自Myre,因为没有一个这里),然后它确定了Ninject依赖项。如果我想让Myre.Debugging和Myre成为一个单独的包,那就好了。然而,这不是我想要的,我希望Myre.Debugging获得对Myre包的依赖。

如何设置nuget来使用Myre作为包引用,而不只是将Myre程序集复制到Myre.Debugging包中?

编辑::我尝试不使用-IncludeReferencedProjects并指定:

代码语言:javascript
复制
<dependencies>
  <dependency id="Myre" version="1.0.0.1" />
</dependencies>

但出于某种原因,这只会创建一个没有依赖项的包!即使像这样手动指定依赖项确实有效,它也不是理想的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 02:42:49

根据Pack命令的NuGet命令行引用IncludeReferencedProjects交换机的工作方式如下:

将引用的项目作为依赖项或包的一部分。如果引用的项目具有与项目同名的相应nuspec文件,则该引用项目将作为依赖项添加。否则,引用的项目将作为包的一部分添加。

在您的示例中,Myre.Debugging.nuspec不匹配项目文件名:(x86) Myre.Debugging.csproj等。我怀疑您需要匹配这些文件名才能使命令行选项正常工作。

或者,如果您想让它与nuspec文件中的<dependencies>元素一起工作,您可能会在名称不匹配问题上面临另一个变量。Myre.nuspec文件将其ID定义为:

$id$

NuSpec参考表示将$id$令牌替换为“程序集名称”。如果它讨论的是DLL的名称(忽略扩展),那么我认为生成的ID将是(x86) Myre,等等。您可能需要尝试对ID进行临时编码,以确定这是否解决了问题。

我没有尝试做这些建议的改变,我也不能保证它们会起作用,但我希望这能为你指明正确的方向。祝好运!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20079651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档