6

使用 Visual Studio 2015 Update 1,当在 Post-Build Event 中运行命令 AL.EXE 时,我正在 Visual C++ CLR 类库项目 (C++/CLI) 中试验一个问题(Visual Studio 2015 没有发生): 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:&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。

4

2 回答 2

5

感谢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 之前将控制台代码页重置为已知值。

于 2015-12-10T06:51:07.527 回答
0

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

al.exe 错误信息

1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3441,5): error MSB6006: "al.exe" exited with code - 1073741819。

这将在您更改默认控制台窗口属性中 的默认代码页后发生:默认值 默认代码页

只需将其还原为437,问题就消失了。

于 2017-07-25T08:56:11.953 回答