【问题标题】:NuGet restore package with xml file content - Working sample?带有 xml 文件内容的 NuGet 还原包 - 工作示例?
【发布时间】:2017-11-01 11:45:22
【问题描述】:

使用的工具:Visual Studio 2015 Enterprise、Nuget 3.5、.NET Framework 4.0

是否有人有一个包含一些 xml 文件和 dll 库的 NuGet 包的工作示例?

我在很多地方都阅读过关于这方面的零散笔记,但我还没有找到一个有效的样本。关于 xml 文件是属于 net 文件夹还是属于 content files 文件夹似乎存在争议。我还读到我们需要某种 power shell 脚本在安装包时将文件复制到 bin 中?

安装包时,xml 必须与 dll 位于 BIN 文件夹中。

一个工作样本会有很大帮助。

【问题讨论】:

    标签: xml visual-studio-2015 package nuget restore


    【解决方案1】:

    安装包时,xml 必须与 dll 位于 BIN 文件夹中。

    如果你想将你的 xml 文件与你的 NuGet 包一起分发到你的 dll 所在的文件夹中,你需要将它们添加到你的 .nuspec 文件中,例如:

    <files>
    <file src="bin\Debug\TestNuGetPackage.dll" target="lib\Net462" />
    <file src="bin\Debug\TestNuGetPackage.xml" target="lib\Net462" />
    </files>
    

    以下是详细步骤:

    1. 创建一个空白的 C# 类库项目,在文件资源管理器中打开该项目。
    2. 使用nuget spec "..\TestNuGetPackage.csproj" 创建TestNuGetPackage.csproj.nuspec 文件。
    3. 修改.nuspec文件,下面是我的.nuspec文件:

      <?xml version="1.0"?>
      <package >
       <metadata>
         <id>TestNuGetPackage</id>
         <version>1.0.0</version>
         <authors>Tester</authors>
         <owners>Tester</owners>
         <requireLicenseAcceptance>false</requireLicenseAcceptance>
         <description>A description of your library</description>
         <releaseNotes>Release notes for this versio</releaseNotes>
         <copyright>Copyright 2017</copyright>
         <tags>Tag1 Tag2</tags>
       </metadata>
      <files>
        <file src="bin\Debug\TestNuGetPackage.dll" target="lib\Net462" />
        <file src="bin\Debug\TestNuGetPackage.xml" target="lib\Net462" />
      </files>
      </package>
      
    4. 使用nuget.exe pack "..\TestNuGetPackage.csproj.nuspec" 创建包。

    5. 使用 .net framework 4.62 创建一个测试项目,然后将该包安装到项目中并构建它,您会发现 xml 文件必须在带有 dll 的 BIN 文件夹中。

      李>

    【讨论】:

    • 我可以让 xml 显示在我在 nuget 包中使用的 Net40 文件夹中。问题是当 dll 恢复时,xml 不会恢复到 bin 文件夹。 xml 根本不会恢复。也许我需要将一个开关添加到我的 nuget restore 以使 xml 也恢复?我以为我在构建软件包时出错了,但看起来我做对了。
    • 我已经弄清楚了问题所在:Project.Json 和 .NET Framework 4.0。如果我使用 452 和 package.config 文件一切正常,但如果你使用我上面指定的工具,这不起作用,对不起。
    • 哇,你是对的。之前没注意,谢谢分享。这在之前的版本framework和project.json中可能不支持。您可以将您的评论转换为答案,然后对其进行标记,这样可以帮助遇到相同问题的其他社区成员并更容易找到此问题的原因。谢谢。
    • 嗯,没有解决办法,不知道要不要将此标记为已回答。这似乎是软件中的实际 MS 缺陷。在 Nuget 3.5 中仅支持 nuget 包中的 dll 文件没有任何意义。也没有任何文档表明 xml 被排除在外。所有文档都表明确实支持 xml。
    • 我已经能够让它与 ContentFiles 文件夹一起使用,但不适用于 NPM 和 VS 2015。它只能直接与 nuget.exe 3.5 一起使用。所以如果你想恢复你的xml文件,你必须退出VS 2015并从命令行恢复才能正确恢复你的xml文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多