纯内容 Nuget 包无法还原内容

  • 本文关键字:还原 包无法 Nuget c# nuget
  • 更新时间 :
  • 英文 :


>我创建了一个纯内容的Nuget包,该包将文本文件添加到安装它的项目中。我在没有文本文件的情况下签入了项目,因为我希望在nuget restore期间恢复它。在 CI 计算机尝试还原包之前,一切都很好。还原成功,但未添加文本文件。显然,nuget 认为文本文件已经存在,因为项目文件中有对它的引用。

如何让 nuget 恢复文本文件?

从本质上讲,我想要的行为与 DLL 文件相同:安装包时,将对 DLL 的引用添加到项目中;还原包时,还原 DLL 以满足项目文件中的引用。我想要相同的行为,但对于文本文件。这可能吗?

我最终做的是将文本文件放入顶级文件夹中,如下所示(我的 .nuspec 中的一个片段(:

    </metadata>
    <files>
        <file src="dictionary.txt" target="dictionary.txt" />
    </files>
</package>

因此,当安装软件包时,该文件被放入/packages/MyPackage.0.0.6并从 .csproj 引用,如下所示:

<ItemGroup>
  <EmbeddedResource Include="$(SolutionDir)packagesMyPackage.0.0.6dictionary.txt" />
</ItemGroup>

然后从.cs读取文件,如下所示:

var stream = Assembly.GetExecutingAssembly()
             .GetManifestResourceStream(GetType(), "dictionary.txt");

这让我获得了所需的行为:当包被恢复时,文件被恢复并准确地放在引用指向的位置。

最新更新