编译时,我收到LC.EXE
的错误 The specified task executable "LC.exe" could not be run. The filename or extension is too long
编译单元测试项目时会发生此错误。在我看过的google技巧中,没有任何效果。
今天开始了。源控制历史中几乎没有任何东西。所有更改都与AssemblyInfo.cs
有关,其中第三方实用程序会增加我们的版本#。
更新
查看我的输出窗口,对LC.EXE的命令行调用是 HUGE
CompileLicxFiles:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\LC.exe /target:BuildAll.Tests.dll /complist:Properties\licenses.licx /outdir:obj\Debug\ /i:C:\
有100个/i
参数......
答案 0 :(得分:13)
有MS支持解决方法:
构建项目时,从项目中删除许可证文件 每次出现此错误时,只需删除许可文件
即可
https://connect.microsoft.com/VisualStudio/feedback/details/779433/lc-exe-task-command-line-too-long
答案 1 :(得分:3)
我在Build Action
文件中将属性EmbeddedResource
的值从None
更改为licenses.licx
。它解决了这个问题。
答案 2 :(得分:2)
有同样的问题。 对于Lc.exe,会生成一个命令行,这个命令行最多可以限制在32k左右。 在此命令中,通常所有引用都使用完整路径写入。
所以如果你有很多参考文献,你可能会遇到麻烦。
你可以做一些事情: - 删除未使用的引用 - 确保不引用间接依赖。请改为使用您可以为程序集定义的提示路径。 - 缩短放置引用的路径 - 你可以创建一个虚拟驱动器来将refs放在那里以获得可能的短路参考路径(例如Z:\ my.dll)
答案 3 :(得分:0)
我今天遇到了问题,当我将引用的路径更改为更长的路径时,它得到了解决。例如,我最初将它放在mydocuments\user\...\...\..
中。但当我改变路径c:\dlls\
时,它就像一个魅力。希望有所帮助。
答案 4 :(得分:0)
我对文件LC.exe有一个不好的问题,一切都是因为我使用的组件是在网络驱动器(G :)中,从那个位置我永远无法编译可执行文件。 我终于解决了在互联网选项中可靠的站点内部网之间添加网络驱动器的IP地址。
答案 5 :(得分:0)
我使用了此博客post中提到的命令行实用程序“Subst”来解决我的LC.exe问题。
构建项目。
请记住,Subst不会在重新启动后继续存在。
答案 6 :(得分:0)
我遇到了同样的问题,我将此代码添加到了项目中,并且可以正常工作。
<Target Name="WorkaroundMSBuild2836" BeforeTargets="CompileLicxFiles">
<!-- Work around https://github.com/Microsoft/msbuild/issues/2836 by
temporarily setting TargetFrameworkVersion to a version high
high enough to cause the LC task to use a response file. -->
<PropertyGroup>
<_OriginalTargetFrameworkVersion>$(TargetFrameworkVersion)
</_OriginalTargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
</PropertyGroup>
</Target>
<Target Name="UndoWorkaroundMSBuild2836" AfterTargets="CompileLicxFiles">
<PropertyGroup>
<TargetFrameworkVersion>$(_OriginalTargetFrameworkVersion)
</TargetFrameworkVersion>
</PropertyGroup>
</Target>
有关更多信息,请阅读this post