nuget包装解决方案中的参考组件

时间:2012-02-24 21:39:18

标签: nuget nuget-package

我有一个具有以下结构的visual studio解决方案

Project 1
   Reference Projec2
   Reference Projec3
Project 2
Project 3

以上都是.NET 4项目。我正在尝试为Project 1创建一个nuget包,但是使用默认的nuspec文件,该包不包含net40文件夹中的project2和3程序集。请注意,我不想为project2和3创建单独的包,因为这些程序集仅由Project 1使用。

为了解决这个问题,我正在做这样的事情

  <files>    
    <file src="bin\release\*.dll" target="lib\net40"                           
          exclude="**\Project1.dll"  />
  </files>

我想知道以上是否是最佳解决方案?

对于Symbol包,它不包括Project 2和3的.pdb文件?

我也注意到在nuget website上它说

  

如果指定任何文件,则会忽略约定,仅忽略约定   .nu​​spec文件中列出的文件包含在包中。

我没有看到上面发生的事情,因为当我使用该元素时,我仍然按照惯例获取lib文件夹中的Project1程序集,因此我不得不排除它,否则nuget会抛出该文件已存在的异常。任何想法?

2 个答案:

答案 0 :(得分:0)

如果没有理由将Project1,2和3分开(并且您说2和3仅被1使用),请将它们合并到一个项目中。您还可以通过在一个项目中添加文件夹来分离问题。例如,对于一个典型的基于MVVM的WPF项目,我会有

MyProject
[ ]Properties -> contains AssemblyInfo.cs
[ ]Resources -> contains resources
[ ]Model -> contains Model classes
[ ]ViewModel -> contains ViewModel classes
[ ]View -> contains View classes
[ ]App -> contains App.xaml etc.

等。等。

答案 1 :(得分:0)

您可以将多个程序集(和PDB)添加到程序包中,但是,您必须列出它们,因为通配符不起作用(至少上次我没有尝试过)。

或者你可以使用这样的解决方案自动创建nuspec(和nupkg)文件:

将我的实用程序NuGetPack.exe和标准NuGet.exe添加到您的解决方案文件夹和解决方案中,然后将新的类库项目添加到您的解决方案中,引用要打包的项目,然后添加一个将构建事件发布到新项目和构建。

您可以找到包含walk-through guide heresource code + binary here

的文章