我有一个用C#编写的Azure Function应用程序 . 我可以使用Visual Studio 2017(Professional,版本15.5.3)在本地运行和调试它 . 我还可以使用msbuild从开发人员命令提示符为2017年本地构建它 .
此应用程序不会构建在我们的Jenkins实例上 - 使用Visual Studio构建工具或在VM上安装Visual Studio社区(我没有专业版的构建服务器许可证)并在那里使用开发人员命令提示符 . (我已确保安装了.NET Core构建工具,请参阅Visual Studio 2017 MSBuild failed to build Azure Functions)
我收到以下错误:
C:\ Program Files \ dotnet \ sdk \ 2.1.4 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.PackageDependencyResolution.targets(557,9):错误MSB4186:无效的静态方法调用语法:“[System.IO名为.directory] ::的getParent() . GET_NAME()” . 找不到方法'System.IO.Directory.GetParent' . 静态方法调用的格式应为:$([FullTypeName] :: Method()),例如: $([System.IO.Path] ::组合(a,b)) . [c:\ jenkins \ workspace \ Folder.Name \ Job Name \ Project.Name \ Project.Name.csproj]
我已经检查过所提到的SDK与在我的本地机器上运行的版本相同 .
我需要做些什么才能让这个VM能够构建一个azure功能应用程序?
1 回答
我们遇到了同样的问题:“手动”构建 - 即使在构建服务器上运行,尽管登录不同 - 也会成功 . 通过Jenkins运行时,相同的构建脚本失败 .
我们的修复是在恢复时(因此在构建时)始终使用项目本地包目录 . 如果内存服务,Jenkins在
\windows\system32
文件夹下使用.nuget
目录 . 此文件夹由多个构建作业等共享,并且某些内容被错误地引用 .添加
-PackagesDirectory
参数到NuGet restore
解决了问题,例如:如果您正在使用
dotnet restore
,我相信--packages
参数会做同样的事情 .