我有一个网络项目(mvc5)项目.json inside.
另外,我有一个 nuget 包。在这个包中(除了 dll 引用之外)我有一些内容文件(cshtml 文件、css、javascript 等)。
有 2 个目标需要实现:
- 将包安装到项目后,我想将内容文件包含到项目中。
- 构建项目后我希望 nuget 恢复内容文件
nuspec 文件:
<?xml version="1.0"?>
<package>
<metadata>
/.../
<dependencies>
<group targetFramework="net461">
/.../
</group>
</dependencies>
<contentFiles>
<files include="**/*.*" flatten="false" copyToOutput="false" buildAction="Content" />
</contentFiles>
</metadata>
<files>
/.../
<file src="..\src\Content\**\*.*" target="contentFiles\any\any\Content" />
<file src="..\src\Views\**\*.*" target="contentFiles\any\any\Views" />
</files>
</package>
好吧,Visual Studio 正在添加 nuget 包,没有任何问题。参考文献也包含在内。但内容总是缺失。内容文件不会从 /packages/ 文件夹复制,也不会包含到项目中。
当我构建项目时也是如此 - 它只是复制 dll,根本不触及包中的内容文件。
它仅在我有 copyToOutput="true" 时才有效,但当然,所有内容都会进入 bin 文件夹。
我需要恢复内容文件的原因是 nuget 包中的文件被 tfs“忽略文件”(.tfignore) 忽略。我不想让这些内容文件成为 TFS 中 Web 项目的一部分。但是,当然,TFS 构建服务器无法构建项目,因为缺少一些内容文件(包中的文件)。因此,我希望构建服务器上的 nuget 在构建项目之前恢复内容文件。
如果可能的话,知道如何完成这项工作吗?或者也许这是不可能的,我必须将内容文件包含到项目中?
您可以将 msbuild 目标添加到您的包中。在此目标中,您可以执行 nuget Restore 命令...
example:
<?xml version="1.0"?>
<package >
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Include your MSBuild target to \build -->
<file src="build\myNuGetRestoreTarget.targets" target="build" />
</files>
</package>
see:
https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package#include-msbuild-props-and-targets-in-a-package
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)