【问题标题】:nuget packaging referenced assemblies in the solutionnuget 打包解决方案中引用的程序集
【发布时间】:2012-03-15 08:33:41
【问题描述】:

我有一个具有以下结构的视觉工作室解决方案

Project 1
   Reference Projec2
   Reference Projec3
Project 2
Project 3

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

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

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

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

同样对于 Symbol 包,它不包含项目 2 和 3 的 .pdb 文件?

我还注意到,在 nuget website 上它说

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

我没有看到上述情况发生,因为当我使用该元素时,我仍然按照惯例在 lib 文件夹中获取 Project1 程序集,因此我必须将其排除,否则 nuget 会抛出该文件已存在的异常。知道吗?

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    如果没有理由将 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.
    

    等等。等等。

    【讨论】:

      【解决方案2】:

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

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

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

      您可以找到带有walk-through guide here 和source code + binary here 的文章。

      【讨论】:

        猜你喜欢
        • 2018-01-07
        • 2022-06-29
        • 1970-01-01
        • 1970-01-01
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多