如何创建共享源文件的nuget包?

时间:2017-09-17 20:25:33

标签: c# .net nuget nuget-package csproj

我试图弄清楚是否有办法创建一个nuget包,可用于共享真正关注开发的依赖关系,而不是消费者。我们的团队拥有一套Check(或GuardEnsure等)方法,我们会在所有项目中使用这些方法。现在我们只需将csharp文件从一个repo复制到另一个repo,并通过手动修改csproj来包含来自该repo中所有项目的引用:

<Compile Include="..\Shared\Check.cs" Link="Properties\Check.cs" />

理想情况下,我想创建一个nuget包,以便我们可以对这些类进行版本控制,但我不希望nuget包显示为我们编写的每个项目的依赖项。过去有一种方法可以将源文件包含在nuget包中,但似乎不再支持这些文件了。

现在有正确的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将contentFiles部分用于.nuspec文件。这是一个完整的例子

<?xml version="1.0"?>
<package>
  <metadata minClientVersion="3.3.0">
    <id>ContentFilesExample</id>
    <version>1.0.0</version>
    <authors>nuget</authors>
    <!-- The NuGet team authored this package -->
    <owners>nuget</owners>
    <!-- The NuGet team owns this package -->
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>A content v2 example package.</description>
    <tags>contentv2 contentFiles</tags>
    <!-- Build actions for items in the contentFiles folder -->
    <contentFiles>
      <!-- Include Assets as Content -->
      <files include="**/images/*.*" buildAction="EmbeddedResource" />
    </contentFiles>
  </metadata>
</package>

使用NuGet 2.x及更早版本以及使用packages.config的项目时,files元素还用于在安装软件包时包含不可变内容文件。使用NuGet 3.3+和使用project.json pr PackageReference的项目,而是使用contentFiles元素。