仅限内容的Nuget程序包无法还原内容

时间:2017-02-13 15:04:55

标签: c# nuget

我创建了一个仅限内容的Nuget包,它将文本文件添加到它安装到的项目中。我在项目中检查了没有的文本文件,因为我希望在nuget restore期间恢复它。一切都很好,直到CI机器尝试恢复包。还原成功但未添加文本文件。显然,nuget认为文本文件已经存在,因为项目文件中有对它的引用。

如何让nuget恢复文本文件?

基本上,我想要的行为与DLL文件相同:安装软件包时,会将对DLL的引用添加到项目中;当包恢复时,将恢复DLL以满足项目文件中的引用。我想要相同的行为,但对于文本文件。这可能吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

这让我得到了理想的行为:当包恢复时,文件将被恢复并准确放置在引用指向的位置。