从Visual Studio 2015 Update 1中的Post-Build事件执行AL.EXE时出现错误-1073741819(0xC0000005)

时间:2015-12-02 19:12:16

标签: crash visual-studio-2015 c++-cli al.exe

使用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应用程序的错误。

enter image description here

命令行是正确的,因为您可以看到我是否从控制台执行它:

enter image description here

所以我确定问题不在于命令行。

此外,我尝试指定另一个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:&quot;$(IntDir)$(ProjectName).Recursos.es-ES.resources&quot;,Recursos.es-ES.resources /version:15.0.0.0 /culture:es-ES /out:&quot;$(OutDir)es-ES\$(TargetName).resources.dll&quot; /keyname:dwo"/>
</Target>

结果是一样的:Visual Studio尝试运行命令AL.EXE但它崩溃返回-1073741819。

2 个答案:

答案 0 :(得分:4)

感谢JaredPar了解

http://blogs.msdn.com/b/bharry/archive/2015/11/30/vs-2015-update-1-and-tfs-2015-update-1-are-available.aspx?CommentPosted=true#10659560

  

在nmake文件中调用al.exe之前添加以下行   发布活动

     

chcp 437

     

这会在运行前将控制台代码页重置为已知值   Al.exe工具。

答案 1 :(得分:0)

我在尝试构建ASP.NET项目时遇到了同样的问题。

al.exe error message

  

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。

在默认控制台窗口属性中更改默认代码页后,会发生这种情况: Defaults Default code page

只需将其恢复为437即可解决问题。