Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 通过Gitignore递归地包含Nuget DLL_Asp.net Mvc_Git_Nuget_Gitignore - Fatal编程技术网

Asp.net mvc 通过Gitignore递归地包含Nuget DLL

Asp.net mvc 通过Gitignore递归地包含Nuget DLL,asp.net-mvc,git,nuget,gitignore,Asp.net Mvc,Git,Nuget,Gitignore,我将GIT用于一个新的ASP.NETMVC项目。我的gitignore文件中有一行可以忽略DLL *.dll 我想添加以下内容,以便在我的NUGET packages文件夹中包含(即不要忽略)DLL !/packages/*.dll 我遇到的问题是,并非所有的nuget包都是平等创建的,而且,根据所讨论的包的不同,DLL可能嵌套在路径层次结构中任意数量的级别。我似乎只需要一个递归的解决方案,大致如下: !/packages/**/*.dll !/packages/**/* 我还没有找

我将GIT用于一个新的ASP.NETMVC项目。我的gitignore文件中有一行可以忽略DLL

*.dll
我想添加以下内容,以便在我的NUGET packages文件夹中包含(即不要忽略)DLL

  !/packages/*.dll
我遇到的问题是,并非所有的nuget包都是平等创建的,而且,根据所讨论的包的不同,DLL可能嵌套在路径层次结构中任意数量的级别。我似乎只需要一个递归的解决方案,大致如下:

!/packages/**/*.dll

!/packages/**/*
我还没有找到一个可以通过mysysgit(或git的任何windows发行版)工作的解决方案


有人知道一种方法来实现这一点吗?

*.dll
保存在顶级的
gitignore
中,让它独立运行


在packages目录中创建另一个
.gitignore
文件,并放入
!*。DLL<代码> > 

< P>另一个要考虑的选项不是在你的存储库中包含你的NuGeDLL,而是在你第一次构建你的项目时只下载它们。这就是我们对所有NuGet依赖项所做的

更新

Nuget现在可以处理这个问题,而无需手动创建自己的构建事件。请参阅本页上的详细信息:


原始答案:

我们将NuGet.exe应用程序放在解决方案下的tools文件夹中,然后将以下内容添加到项目预构建事件中

"$(SolutionDir)Tools\NuGet.exe" install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages"

我们第一次构建应用程序时,它将下载所有依赖项,但在后续构建中,NuGet足够聪明,可以看到它们已经以正确的版本存在并跳过它们。

这是一个有趣的解决方案-它为您解决了什么问题?我想我将其视为不签入生成代码的扩展。我们在签入服务引用时遇到了许多问题,在修复该问题的同时,我们还尽可能地在repo中消除了许多外部依赖项。当时,我们在SVN中遇到了大量二进制文件的问题,这些文件减慢了我们的签出速度。我不确定我们当前的设置是否会有问题,但我们还没有回去。更新:Nuget通过Nuget包还原支持此OOB。这是一个有趣的想法,在一定程度上可以看出这一点,但对于自动构建,并确保外部程序集在未来存在(即如果构建长时间未执行)您可能希望使用实际测试的文件,或者在构建过程中不依赖nuget可用性就可以使用这些文件。