2017-03-11 43 views
6

我已经安装了VS 2017构建代理并将其注册到“默认”代理队列中。我正在尝试构建的项目是一个VS 2017类库项目,面向.Net Standard 1.0。 从Visual Studio构建时,构建成功。但构建代理上的构建失败。Visual Studio 2017构建代理无法生成错误cs0400

T16:05:59.0389362Z ## [错误] C:\的Windows \ ServiceProfiles \网络服务\应用程序数据\本地\ Temp.NETStandard,版本= v1.0.AssemblyAttributes.cs(4,20):错误CS0400:类型或命名空间名称“系统”不能在全局命名空间中找到(是否缺少程序集引用?)

通过构建日志与本地构建比较,我可以看到生成代理呼叫缺少“引用”属性的csc.exe。 我的项目没有任何明确的引用 - 它只需要.NetStandard 1.0库(SDK)。 生成代理使用的命令行是:

\的MSBuild \ 15.0 \ BIN \罗斯林\ CSC.EXE/noconfig/unsafe-/checked-/nowarn:1701,1702,1705包括/ nostdlib +/errorreport:提示/ warn:4/define:TRACE; RELEASE; NETSTANDARD1_0/debug-/debug:portable/filealign:512/nologo/optimize + /out:obj\Release\netstandard1.0\Geo.Common.dll/ruleset:“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Team Tools \ Static Analysis Tools \ Rule Sets \ MinimumRecommendedRules.ruleset“/ target:library/warnaserror-/utf8output/deterministic + Distance.cs DistanceExtensions.cs GeoCoordinate.cs Unit。 cs“C:\ Windows \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp.NETStandard,Version = v1.0.AssemblyAttributes.cs”obj \ Release \ netstandard1.0 \ Geo.Common.AssemblyInfo.cs

我知道我可以将'引用'列表作为命令行属性硬编码到构建定义中的构建步骤,但这是一种解决方法。 什么是解决这个问题的正确方法?

谢谢!

UPDATE 原来,失败的原因是,在构建定义前面步骤中,的NuGet恢复用的是3.5版本的nuget.exe。由于项目文件采用VS 2017格式,因此nuget.exe无法找到任何引用的软件包,因此在成功完成时未实际拉入任何内容。因此,在下一步构建失败,因为没有NuGet软件包(因此任何组件)被发现

SOLUTION

我下载nuget.exe 4.0(发现here),并将其放置在代理的工作目录(d:\ VsAgentWork \ nuget.exe在我的情况)。然后,我定制了NuGet Restore步骤,以从提供的位置引用nuget.exe(.... \ nuget.exe)。

+0

,可以确认那意味着你正在使用私人代理?或者,您是否使用托管池?另外,它在构建def中有什么任务? VS构建任务?如果是这样,在下拉菜单中选择了哪个版本? – bryanmac

+0

另外,您是否使用VSTS或TFS 2015/2017? RTM/QU1? – bryanmac

+0

我正在使用私人代理。这是VisualStudio.com在线。 – Artak

回答

2

您需要为您的解决方案恢复软件包。对于.NET Core,您需要使用dotnet cli或MSBuild/t:restore目标执行此操作,或者您可以从nuget站点下载NuGet 4,并将其放到您的构建机器上,并在NuGet安装程序的路径中指定它任务。

+0

谢谢克里斯,我会试试这个,今晚晚些时候回复。 – Artak

+0

由于您的回答是继续调查的良好起点,因此我将其标记为“答案”。但是我会详细说明我的问题,以便其他人可以看到实际发生了什么以及我如何修复它。 – Artak

0

我也在VS2017上体验过这个,它似乎是一个错误。

在一审只需重新启动VS,但我没有找到,所以有时需要完整的步骤来解决问题:

  1. 关闭VS
  2. 删除.vs/文件夹
  3. 删除任何bin/obj/文件夹
  4. 重新加载VS并运行重建
+0

感谢您的回复,尼克。但问题不在Visual Studio中。它建立得很好。这是一个Windows Build Agent问题。 – Artak

0

有了这个完全一样的问题,本身固定它的构建之前从

nuget restore xyz.sln 

切换到

dotnet restore 
nuget restore xyz.sln 

相关问题