首页 文章

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

提问于
浏览
2

我有一个具有以下结构的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上它说的那样

如果指定任何文件,则会忽略约定,并且只有.nuspec文件中列出的文件包含在包中 .

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

2 回答

  • 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

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

    或者您可以使用如下解决方案自动创建nuspec(和nupkg)文件:

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

    你可以找到一篇包含walk-through guide heresource code + binary here的文章 .

相关问题