我想配置一个具有NuGet程序包引用的项目的自动构建,但我没有任何运气。 (仅供参考,我仍然在所有这些耳朵后面都很湿,所以请提供简单的步骤和/或配置。)TFS NuGet安装程序构建步骤不起作用
注意:这不是其他类似问题的重复,因为我使用一个中央软件包库。其他类似的问题没有提到这个重要的细节,所以应该假定它们不相关。
构建运行良好,没有参考。我加入Newtonsoft.Json
并绑定到它通过包括这种简单的结构:
Dim eHandling As Newtonsoft.Json.ConstructorHandling
eHandling = Newtonsoft.Json.ConstructorHandling.Default
我检查并构建开始,但的NuGet没有先复制装配到我的应用程序的文件夹bin
。但是,它确实将其复制到这里:
Restoring NuGet package Newtonsoft.Json.9.0.1.
Adding package 'Newtonsoft.Json.9.0.1' to folder 'C:\Agent\_work\1\s\packages'
自然,构建失败,因为它无法找到依赖关系。
值得一提的是,我用我的开发机器上的中央包库:
<config>
<add key="repositoryPath" value="D:\Dev\Packages" />
</config>
我想效仿服务器上的此行为为好,例如C:\Packages\*\*.nupkg
。
我尝试使用标准%AppData%\NuGet\NuGet.config
文件,但构建忽略它。我尝试了this answer中的建议(使用repositoryPath
而不是packageSources
,如图所示),但这会导致服务器挂起,直到我重新启动VSO代理服务。考虑到这可能是一个权限问题,我重新配置代理以在位置NuGet.config
的位置关联的用户帐户下运行。仍然没有运气。没有建立。
如何让NuGet在运行构建步骤之前下载并填充服务器上的中央软件包存储库,然后将相应的依赖项复制到应用程序bin
文件夹中?
编辑1
更新:显然东西的工作,因为我现在已经在服务器上C:\Packages\Newtonsoft.Json.9.0.1
文件夹。但是,在构建之前,程序集仍然不会被复制到应用程序bin
文件夹中。同样的结果。构建失败。
EDIT 2
OK,我越来越近。我在服务器上创建了D:驱动器,并将本地repositoryPath
的值设置为D:\Dev\Packages
,与我的开发机器上的值相同。构建仍然失败,但快速浏览项目XML揭示了这一点:
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
如何处理相对路径?这应该解决它,是吗?
编辑3
OK,那工作。我编辑了项目并将HintPath
更改为
D:\Dev\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
我现在已经成功构建。
但是,这会变得真正枯燥乏味。当然,我不会为每个单个项目中的每一个NuGet参考都做这件事,过去的现在和将来...我是吗?