问题如下:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(2863,5):错误MSB3086:使用SdkToolsPath“”或注册表项“ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.0A \ WinSDK-NetFx40Tools-x86“。确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK
我尝试了在网络上找到的各种费力的解决方案,但最终我设法解决了以下问题:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\
Microsoft.Common.targets
"al.exe"
在第2步中搜索文件,然后将"ToolPath"
和"ToolExe"
字段替换为"al.exe"
文件的实际路径。我已经按照以下方式在步骤3中设置了两个字段:
ToolPath =“ C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \” ToolExe =“ C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0工具\ al.exe”
谢谢。
这都是假设,所以请耐心等待.
假设我正在用C#编写一个名为Foo的工具.输出是foo.exe.我发现了一些非常棒的库,我喜欢使用名为Bar的库,我可以在项目中将其作为bar.dll引用.当我构建我的项目时,我的输出目录中有foo.exe和bar.dll.目前很好.
我想做的是链接foo.exe和bar.dll,因此它们是一个程序集foo.exe.我宁愿能够在VS2008中这样做,但如果我不得不求助于像al.exe这样的命令行工具,我不介意.
使用Visual Studio 2015年更新1,我尝试一个问题在Visual C++ CLR类库项目(即没有与Visual Studio 2015年发生的事情)(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
Run Code Online (Sandbox Code Playgroud)
这里是一个事件查看器的剪辑,每次我从构建后事件(编译我的项目)运行它时都会显示AL.exe应用程序的错误.
命令行是正确的,因为您可以看到我是否从控制台执行它:
所以我确定问题不在于命令行.
此外,我尝试指定另一个AL.EXE命令的路径,因为Visual Studio 2015 Update 1使用路径:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Run Code Online (Sandbox Code Playgroud)
所以我尝试了
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools
Run Code Online (Sandbox Code Playgroud)
但仍然没有工作.
您可以重现创建新的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>
Run Code Online (Sandbox Code Playgroud)
结果是一样的:Visual Studio尝试运行命令AL.EXE但它崩溃返回-1073741819.