使用Visual Studio 2015 Update 1,我在运行命令AL时在Visual C ++ CLR类库项目(C ++ / CLI)中试验问题(Visual Studio 2015没有发生过)。构建后事件中的EXE:AL.EXE应用程序崩溃,系统返回错误代码-1073741819(0xC0000005)。
这里是构建后事件的内容:
sn -Rca "$(SolutionDir)bin\$(Configuration)\$(Platform)\$(TargetName)$(TargetExt)" dwo
Resgen "$(ProjectDir)Recursos.es-ES.resx" "$(IntDir)$(ProjectName).Recursos.es-ES.resources"
Al.exe /t:lib /embed:"$(IntDir)$(ProjectName).Recursos.es-ES.resources",Recursos.es-ES.resources /version:15.0.0.0 /culture:es-ES /out:"$(OutDir)es-ES\$(TargetName).resources.dll" /keyname:dwo
这里是一个事件查看器的剪辑,每次我从构建后事件(编译我的项目)运行它时都会显示AL.exe应用程序的错误。
命令行是正确的,因为您可以看到我是否从控制台执行它:
所以我确定问题不在于命令行。
此外,我尝试指定另一个AL.EXE命令的路径,因为Visual Studio 2015 Update 1使用路径:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
所以我尝试了
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools
但仍无效。
您可以重现创建新的Visual C ++ CLR类库并在Post-build事件中添加对AL.exe的简单调用的问题。
你知道如何解决这个问题吗?
编辑:我也尝试过像这样的AfterBuild目标:
<Target Name="AfterBuild">
<Exec Command="Al.exe /t:lib /embed:"$(IntDir)$(ProjectName).Recursos.es-ES.resources",Recursos.es-ES.resources /version:15.0.0.0 /culture:es-ES /out:"$(OutDir)es-ES\$(TargetName).resources.dll" /keyname:dwo"/>
</Target>
结果是一样的:Visual Studio尝试运行命令AL.EXE但它崩溃返回-1073741819。
答案 0 :(得分:4)
感谢JaredPar了解
在nmake文件中调用al.exe之前添加以下行 发布活动
chcp 437
这会在运行前将控制台代码页重置为已知值 Al.exe工具。
答案 1 :(得分:0)
我在尝试构建ASP.NET项目时遇到了同样的问题。
1&gt; C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(3441,5): 错误MSB6006:“al.exe”退出,代码为-1073741819。
在默认控制台窗口属性中更改默认代码页后,会发生这种情况:
只需将其恢复为437
即可解决问题。