Ошибка -1073741819 (0xC0000005) при выполнении AL.EXE из события после сборки в Visual Studio 2015, обновление 1
В Visual Studio 2015 с обновлением 1 я экспериментирую с проблемой (которая не возникала в Visual Studio 2015) в проекте библиотеки классов Visual C++ CLR (C++/CLI) при выполнении команды AL.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
но все еще не работает.
Вы можете воспроизвести проблему, создав новую библиотеку классов CLR в Visual C++ и добавив простой вызов 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.
2 ответа
Спасибо JaredPar за работу
Добавьте следующую строку перед вызовом al.exe в вашем файле nmake или после событий сборки
ЧКП 437
Это сбросит кодовую страницу консоли до известного значения перед запуском al.exe.
Я просто сталкиваюсь с той же проблемой, когда пытаюсь построить свой проект ASP.NET.
1> C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets (3441,5): ошибка MSB6006: "al.exe" завершен с кодом -1073741819.
Это произойдет после того, как вы изменили кодовую страницу по умолчанию в свойствах окна консоли по умолчанию:
Просто верните это 437
и проблема ушла.