我目前正在开发一个新项目,它将Typescript用于所有客户端代码。我使用了许多纯JavaScript库来使用我的Typescript。我使用Nuget通过以下包管理器命令拉入* .d.ts文件。
示例包管理器命令:
Install-Package angularjs.TypeScript.DefinitelyTyped -Version 2.0.2
这可以解决问题,在安装我的所有Nuget包之后,在项目目录中创建一个名为 packages.config 的文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="angularjs.TypeScript.DefinitelyTyped" version="2.0.2" targetFramework="net45" />
<package id="angular-translate.TypeScript.DefinitelyTyped" version="0.9.0" targetFramework="net45" />
<package id="bootstrap.TypeScript.DefinitelyTyped" version="0.0.9" targetFramework="net45" />
<package id="jquery.TypeScript.DefinitelyTyped" version="1.4.0" targetFramework="net45" />
</packages>
我的Visual Studios项目现在在安装软件包后有以下目录:
Scripts\
typings\
angularjs\ (contains relivant files)
angular-translate\ (contains relivant files)
bootstrap\ (contains relivant files)
jquery\ (contains relivant files)
现在我的问题是当其他人试图克隆我的存储库时,visual studio会尝试自动恢复Nuget软件包,但会按以下方式安装它们:
Packages\
angularjs.TypeScript.DefinitelyTyped.2.0.2\
Content\
Scripts\
typings\
angularjs\ (contains relivant files)
angular-translate.TypeScript.DefinitelyTyped.0.9.0\
Content\
Scripts\
typings\
angularjs\ (contains relivant files)
bootstrap.TypeScript.DefinitelyTyped.0.0.9\
Content\
Scripts\
typings\
angularjs\ (contains relivant files)
jquery.TypeScript.DefinitelyTyped.1.4.0\
Content\
Scripts\
typings\
angularjs\ (contains relivant files)
我已阅读过多个stackoverflow线程和Nuget文档,但似乎无法找到解决方案,我可以在新的repo机器上运行命令,它会将文件恢复到我以前的配置在原来的机器上。
理想情况下,我希望避免编写* .bat文件,将文件结构转换为我想要的方式。
答案 0 :(得分:3)
我相信你遇到了一个常见的Nuget misconceptions。这里的问题是(自动)Nuget Restore与Install-Package不同。 Nuget Restore的目标是下载和解压缩包。它不会还原项目或解决方案文件夹的内容。阅读文章了解更多有关原因的细节。有很多人对这种行为感到生气,但这是Nuget开发人员的选择。
this issue的评论中提到了许多解决方案。我个人使用Install-Package MSBuild.NugetContentRestore
这就是我解决内容文件问题所需的全部内容。
希望这有帮助。