Asp.net mvc 通过Gitignore递归地包含Nuget DLL
我将GIT用于一个新的ASP.NETMVC项目。我的gitignore文件中有一行可以忽略DLLAsp.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/**/* 我还没有找
*.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可用性就可以使用这些文件。