我有一个内部有 project.json 的网络项目(mvc5)。
另外,我有一个nuget包。在这个包里面(除了dll引用)我有一些内容文件(cshtml文件,css,javascript等)。
要实现两个目标:
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 =&#34; true&#34;时它才有效,但当然所有内容都会转到bin文件夹。
我需要恢复内容文件的原因是来自nuget包的文件被tfs&#39;忽略文件&#39;忽略。 (.tfignore)。我不想让这些内容文件成为TFS中Web项目的一部分。但是,当然,TFS构建服务器无法构建项目,因为缺少某些内容文件(包中的文件)。所以我希望构建服务器上的nuget在构建项目的统计信息之前恢复内容文件。
如果有可能,任何想法如何让这项工作?或者这可能是不可能的,我必须将内容文件包含在项目中?
答案 0 :(得分:2)
您可以在包中添加msbuild目标。在此目标中,您可以执行nuget restore命令...
示例:
<?xml version="1.0"?>
<package >
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Include your MSBuild target to \build -->
<file src="build\myNuGetRestoreTarget.targets" target="build" />
</files>
</package>
答案 1 :(得分:1)
这是设计的。 NuGet包不再需要修改项目的源代码,而只是添加到其构建的输出或构建过程(除了.NET库之外)。用于向项目添加源的content
文件夹仅继续支持基于packages.config
的项目,因为它将对现有项目进行重大更改,但使用project.json
或{{1 (VS 2017)获得新的行为。