2012-02-24 182 views
2

的NuGet包装引用的程序我有具有以下结构的在溶液

Project 1 
    Reference Projec2 
    Reference Projec3 
Project 2 
Project 3 

上述所有Visual Studio解决方案是.NET 4个项目。我正在尝试为Project 1创建nuget包,但是使用默认的nuspec文件时,该包不包含net40文件夹中的project2和3程序集。请注意,我不希望创建项目2和3个独立的软件包,因为这些组件只使用过的由项目1.

要解决这个问题,我做这样的事情

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

我想知道以上是最好的解决方案吗?

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

我也注意到,在的NuGet website它说,

如果您指定的任何文件,该公约被忽略,只有在.nuspec文件中列出的 文件都包含在包中。

我没有看到上述情况发生,因为当我使用的元素,我还是按照惯例让lib文件夹中的PROJECT1组装,因此我不得不将它排除在外,否则的NuGet抛出异常,该文件已经存在。任何想法?

回答

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. 

等等,等等

0

您可以将多个组件(和PDBS)添加到您的包,但是,你必须一一列举,因为通配符不起作用(至少他们没有上次我尝试过)。

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

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

您可以在walk-through guide heresource code + binary here之间找到一篇文章。