>我创建了一个纯内容的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");
这让我获得了所需的行为:当包被恢复时,文件被恢复并准确地放在引用指向的位置。