我已将 packages.config 文件签入源代码管理。这指定了我想要的 Nuget 依赖项的确切版本。我们有自己的 NuGet 存储库。我们正在自己创建这些 NuGet 包。
<packages>
<package id="Dome" version="1.0.0.19" targetFramework="net45" />
<package id="Dome.Dojo" version="1.0.0.19" targetFramework="net45" />
</packages>
这些包有一些 JavaScript 文件,当您在 Visual Studio 中添加 Nuget 包作为参考时,这些文件会复制到项目中的 Scripts 文件夹中。
我不想将这些 JS 文件签入源代码控制,我只想签入 packages.config 文件。
当我的项目在 Team City 中构建时(或者当我在重新签出后在 Visual Studio 中构建时)它不会从 NuGet 包中复制 JS 文件。这里有一个问题解释了类似的问题:
但是,该问题的答案中的解决方案对我不起作用;该解决方案使用 ReInstall,这是有问题的,因为它可以自动升级 packages.config 文件中的版本(例如,如果将依赖项指定为 >=)。
这样做的全部意义在于,我希望能够从我的源代码管理中签出修订,并使用正确的依赖项构建该版本,并且我想使用 NuGet 的出色打包功能。所以,我不希望任何“在构建过程中自动更新到最新版本”。
NuGet ( http://nuget.codeplex.com/workitem/2094 ) 存在一个关于 NuGet 文件不恢复内容文件的问题。它被标记为按设计关闭。
再考虑一下这是如何工作的,在我看来(但我不是 100% 确定)对于程序集,NuGet 具有不同的行为 - 它不会将它们复制到项目中,而是从包文件夹。让我印象深刻的是,NuGet 包中的 js 文件应该像引用dll 一样被引用。
有没有办法构造一个 NuGet 包,以便它引用 JS 作为项目中的链接(类似于如何在 VS 中添加现有文件作为链接)?这会解决我的问题吗?
如果没有,那么我将在关闭上面提到的 Nuget 问题 2094 时接受 Jeff Handley 给出的建议:
您可以选择创建一个引用 NuGet.Core 的新控制台可执行文件,并且您可以构建一个补充包还原供您自己使用,将包内容复制到项目中。
编写我自己的命令行工具来复制内容似乎我在这里推水 - 我在做一些根本错误的事情吗?