obj目录中的*.dll.licenses文件不是在TeamCity中使用msbuild创建的

gwi*_*003 47 c# msbuild asp.net-mvc teamcity visual-studio-2015

我正在努力将我们的TeamCity项目从VS2012升级到VS2015,我遇到了编译MVC应用程序的问题.

旧的MSBuild(v4.0.30319.34209)在obj目录中生成一个文件,该文件MyApplication.Web.Mvc.dll.licenses显然是构建所必需的,但我们不知道该文件实际用于什么.

新的MSBuild(v14.0.23107.0)不会创建此MyApplication.Web.Mvc.dll.licenses文件,因此生成失败,并显示以下错误:

CSC error CS1566: Error reading resource 'MyApplication.Web.Mvc.dll.licenses' 
-- 'Could not find file 'C:\BuildAgent\work\58ddf5f1234d8c8a\application\MyApplication\MyApplication.Web.Mvc\obj\Release\MyApplication.Web.Mvc.dll.licenses'.' 
Run Code Online (Sandbox Code Playgroud)

我一直在机器上通过cmd手动运行构建,并且dll.licenses每当使用旧的msbuild运行构建时都会创建文件,而不是新的构建.

该文件在运行VS2015的开发计算机上创建,但不在Teamcity构建服务器上创建.所以在我看来其他东西已经过时了?

Njå*_*ark 38

经过一番谷歌搜索后,我在MSDN上偶然发现了这个帖子.

这里建议的解决方案是安装Windows 10 SDK.我们使用默认安装选项在运行Windows Server 2012 R2的TeamCity构建服务器上执行此操作,并在重新启动后,我们的构建再次运行.

希望这可以帮助 :)

  • 谢谢!!解决了我的问题.来吧,MS.把你的废话放在一起!! 我不应该从我的开发系统安装多个软件包和复制文件夹以使CSC工作. (6认同)
  • 我发现你实际上没有必要安装整个Windows10 SDK(2.5Gb),为了让这个错误消失,只需选择.Net Framework 4.6软件开发套件(~50Mb)就可以了. Win10 SDK安装程序. (6认同)
  • 这对我帮助很大.我们转移到MsBuild 2015,我们的licenses.licx文件不再编译为/ obj /文件夹中的*.licences文件.安装Win 10 SDK按照您的建议修复它 (2认同)

小智 10

答案"安装Windows 10 SDK"是正确的 - 基本上.但是还有一个缺陷:这个SDK中存在多个版本:https://developer.microsoft.com/en-us/windows/downloads/sdk-archive

通过撰写此评论:

  • 2015年7月(版本10.0.26624.0)包含.NET Framework 4.6 SDK
  • 2015年11月(版本10.0.10586.212)包含.NET Framework 4.6.1 SDK
  • 2016年8月(版本10.0.14393.0)包含.NET Framework 4.6.2 SDK

检查VS 2015输出以及调用的LC.exe版本.然后在构建服务器上安装相应的SDK.不要忘记也安装Microsoft Build Tools 2015.

注意:我的构建目标是.net 4.5,但需要使用以上工具构建TeamCity.

  • 以下是上述Windows 10 SDK的归档页面的链接.找到这些版本,并在安装它们时取消选择除.NET Framework 4.6.xxx SDK之外的所有内容.https://developer.microsoft.com/en-us/windows/downloads/sdk-archive (2认同)

小智 8

在我的例子中,TFS使用lc.exe旧版SDK文件夹中的许可证编译器

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\lc.exe
Run Code Online (Sandbox Code Playgroud)

代替

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\LC.exe
Run Code Online (Sandbox Code Playgroud)

通过将以下msbuild参数添加到构建定义来解决此问题:

/p:FrameworkOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2"
Run Code Online (Sandbox Code Playgroud)

通过在构建服务器上安装visual studio并添加visual studio构建步骤来替换2015 msbuild步骤,您还可以摆脱这些问题并使您的生活更轻松

  • 类似的解决方案帮了我/p:TargetFrameworkSDKToolsDirectory ="C:\ Program Files(x86)\ Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1工具" (2认同)

Tom*_*Tom 6

我使用Atlassian Bamboo作为我们的构建服务器,但在此处描述的问题完全相同.我尝试了这个线程中的每个解决方案,但是没有任何工作可行.最后,我使用了Visual Studio 2017附带的新版本的MSBuild,突然我的许可证dll被正确创建了.在我的例子中,可以在以下位置找到MSBuild.exe:

C:\ Program Files(x86)\ Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe

  • 这也为我解决了问题,尽管路径略有不同:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe (2认同)