Kon*_*ten 7 msbuild tfs continuous-integration azure-devops
我问了一个关于构建错误的问题,并继续通过我的绝望自我调查问题.
我猜测问题是关于被提取但未正确放置的包.透过痛苦无聊的日志给我看了这个.
2016-01-15T21:50:40.8680146Z
在"C:\ Program Files(x86)\ MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets(186,61)"中的BeforeTargets属性中列出的目标"BeforeGenerateProjectPriFile"不存在于项目中,将被忽略.
此后不久,我可以看到一些横向走势的第一个迹象.
2016-01-15T21:50:43.9631666Z ## [警告]
C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5):警告MSB3245:无法解决此问题参考.无法找到程序集"Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.
2016-01-15T21:50:43.9631666Z 2>
C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5):警告MSB3245:无法解析此引用.无法找到程序集"Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.[C:\一个\ 1\S \的MyStuff\MyStuff.csproj]
然后它继续考虑那些不存在的东西.
2016-01-15T21:50:43.9661661Z被
认为是"..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib \net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll",但它不存在.
2016-01-15T21:50:43.9671655Z
对于SearchPath"{TargetFrameworkDirectory}".2016-01-15T21:50:43.9681655Z被
认为是"C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.winmd",但它没有存在.
...
我不熟悉TFS上的CI和VS Online,所以它很少告诉我在哪里可以解决这个问题.我用谷歌搜索了一半,并在门户网站上测试了大量不同的设置.没运气.我可能会导致其他错误(当我知道我输入了错误的东西等等)但是不管怎么说,我都会转向这个错误.
任何提示将不胜感激.
小智 6
从版本VS2015开始,不需要NuGet文件夹,这与我见过的指南相反.实际上,唯一需要的文件是包的配置.检查包及其可执行文件是常见但非常具有欺骗性的解决方法,但这可能会产生很多问题.我不建议这样做,因为它隐藏了问题,而不是解决它.
首先,验证您的构建实际上是否还原了包.我注意到在错误日志中,它看起来如果确实如此,但这是一个陷阱.这是尝试恢复,而不是实际的成功.如果你遇到这样的警告(对于nUnit,WebGrease,NewtonSoft或NuGet控制下的任何其他软件包也是如此):
警告MSB3245:无法解析此引用.无法找到程序集"EntityFramework".检查以确保磁盘上存在程序集.
首先验证日志是否包含以下段落:
PrepareForBuild:
创建目录"obj\Debug \".
...
RestorePackages:
"C:\ a\src\src.nuget \nuget.exe"install"C:\ a\src\src\xxxx.Entities\packages.config"
-source -RequireConsent -o"C:\ a\src\src\packages"
...已
成功安装"EntityFramework 6.3.1".ResolveAssemblyReferences:
主要参考"EntityFramework".
请记住,查看日志文件时,请搜索部分字符串,因为目录,版本,软件包的名称等可能略有不同.如果找不到,那么很有可能在构建服务器上没有恢复软件包.本地编译证明环境之间存在差异,很可能文件packages.config不可用.这是一个棘手的错误,因为失败的日志不会告诉你它丢失了.事实上,我的日志中根本没有提到它.
出现此问题是因为初始签入选择了许多要忽略的文件.主要是bin,obj等,还有packages.config.需要特别选择它作为不被忽略的.如果有人检查了所有文件(在我的视图中不是很明智),他也会获得所需的文件,因此看起来好像他们做得对.请注意,您应该首先将文件添加到版本控制.这样,它就会在每次更改时签入.否则,如果您在本地添加新包或更新现有包,问题将重新出现.
如果收到警告但已恢复软件包(日志中列出了行),请尝试在本地更新软件包或重新安装.最后,您可以通过运行从程序包管理器控制台刷新安装Update-Package -Reinstall.
| 归档时间: |
|
| 查看次数: |
3805 次 |
| 最近记录: |