Dan*_*son 5 continuous-integration nuget nuget-package nuget-server
我们已成功使用NuGet.Server软件包设置了几个本地软件包存储库,并将它们托管在本地IIS Web服务器上.我们能够从包管理器连接并安装没有问题.所以这些都很好.
为了使我们不必签入我们的packages文件夹,我们在每个包含NuGet引用的项目文件中包含以下命令行.如果NuGet.exe位于CI构建代理程序的路径中,则此方法有效.
但是,我想在每个项目文件中将命令行的源配置移动到一个地方,最好是其他讨厌的开发人员无法更改它;)
<Target Name="BeforeBuild">
<Exec Command="nuget install $(ProjectDir)packages.config -s
http://domain:80/DataServices/Packages.svc/;
http://domain:81/DataServices/Packages.svc/
-o $(SolutionDir)packages" />
</Target>
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
Xav*_*ter 13
是的;-)看看NuGetPowerTools.运行Install-Package NuGetPowerTools后,它会在你的$(SolutionDir)中添加一个.nuget文件夹,其中包含nuget.exe,nuget msbuild目标和设置(你需要签入).
之后,您只需运行Enable-PackageRestore,它就会将msbuild目标设置到您的visual studio项目文件中,这将确保在预构建步骤中获取包,甚至在构建服务器上,而无需检入任何包.(不要忘记检查.nuget文件夹!).
这样,您只需在解决方案中心的nuget msbuild设置文件(位于.nuget文件夹中)中管理nuget包源,而不是在每个项目中.
干杯,泽维尔
我终于从NuGetPowerTools上digitaltrust的意见后安装http://blog.davidebbo.com
虽然NuGetPowerTools解决了我的问题,但它对我想要的东西来说太过分了.它要求您签入版本控制它在解决方案根目录中创建的.nuget文件夹.该文件夹包含NuGet.exe和几个目标文件.我不喜欢这个,因为我认为版本控制是针对源代码而不是工具.
我提出了以下解决方案.
在持续集成计算机上,找到%APPDATA%\ NuGet\NuGet.Config并输入以下内容
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="LocalRepositoryName" value="http://Domain/DataServices/Packages.svc/" />
</packageSources>
Run Code Online (Sandbox Code Playgroud)
您可以向packageSources添加多个条目,NuGet将按照它们出现的顺序搜索它们
我的问题的后构建代码现在可以修改为以下内容.
<Target Name="BeforeBuild">
<Exec Command="nuget install $(ProjectDir)packages.config
-o $(SolutionDir)packages" />
</Target>
Run Code Online (Sandbox Code Playgroud)最终结果是,无论何时更改批准的存储库位置,都必须仅在一个位置而不是在每个csproj文件中更改配置.此外,是持续集成服务器管理员确定位置,而不是命令行调用中的开发人员.
| 归档时间: |
|
| 查看次数: |
11764 次 |
| 最近记录: |