我有一个依赖于NuGet包的Web API项目。此包包含一个 XML 文件,该文件由我的应用程序在运行时引用。
当我从 Visual Studio 生成解决方案并在调试模式下运行它时,文件被复制到 \bin,并且应用程序运行没有问题。
当我发布应用程序时,文件不会复制到最终输出,并且我可以看到它从未复制到 \obj 文件夹。
我已经将文件引用直接添加到 \packages 文件夹中的包中,但每当更新包版本时,这都会中断。
如何指定部署时应复制文件?
我根据这篇博文想通了。
我在 .csproj 文件的末尾添加了以下内容:
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<Message Text="=== CustomCollectFiles ===" Importance="high" />
<ItemGroup>
<_CustomFiles Include="..Packages***PackageName.*.xml*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
Petter Brodins 的回答几乎对我有用。而且由于我是Stackoverflow评论的新手,因此我无法添加评论。为了使它正常工作,我将包含更改为"..\Packages*\lib*.xml"。但这是一个救命稻草,因为我写了很多文档,但无法把它带到我的大摇大摆的实现中。