8

我向 appharbor 上传了一个 .NET 4 C# 解决方案,但是当 appharbor 尝试构建它时,其中一个 c# 类库会生成此错误:

项目“D:\temp\cbymsn2u.j0c\input\UI\Tray\Tray.csproj”正在构建“D:\temp\cbymsn2u.j0c\input\Business\Crawler\Crawler.csproj”(GetNativeManifest 目标) : c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1558,9):警告 MSB3084:任务试图在两个位置找到“AxImp.exe”。1) 在“C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\”下根据 SdkToolsPath 生成的处理器特定目录 2) 在“C:\Program Files\”下的 x86 特定目录Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\",由 SDKToolsPath 属性指定。您可以通过执行以下操作之一来解决问题: 1) 设置“SDKToolsPath” 属性到 Microsoft Windows SDK 的位置。c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1558,9): error MSB3086: Task could not find "AxImp.exe" using the SdkToolsPath "C:\Program Files\Microsoft SDKs \Windows\v7.0A\bin\NETFX 4.0 Tools\" 或注册表项 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A"。确保设置了 SdkToolsPath,并且该工具存在于 SdkToolsPath 下的正确处理器特定位置,并且安装了 Microsoft Windows SDK 完成构建项目“Tray.csproj” - 失败。

Crawler.csproj 中似乎没有任何不同的引用,那么这个错误来自哪里?相同的代码在本地构建良好。

4

1 回答 1

12

它查看了该工具的安装位置,c:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\AxImp.exe 是正常位置。您可以在自己的机器上验证这一点。我不确切知道 AppHarbor 做了什么,但他们有意删除该工具的可能性很大。

在远程构建服务器上运行 AxImp.exe 的希望很小,ActiveX 组件不会安装在该机器上。您需要在自己的工作站上运行 AxImp.exe,只需执行一次。将它生成的两个程序集添加到您的项目中,interop.foo.dll 和 axinterop.foo.dll。将它们的 Copy Local 属性设置为 true。

如果您确实打算在该远程计算机上运行您的应用程序,则立即停止,ActiveX 控件将不会安装在该计算机上。安装它应该需要一两个奇迹。

于 2011-05-07T20:48:47.323 回答