任务找不到“AxImp.exe”

我向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 target(s)) :c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1558,9):警告MSB3084:任务尝试在两个位置查找“AxImp.exe”。 1)在基于SdkToolsPath生成的“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools \”处理器特定目录下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):错误MSB3086:任务无法使用SdkToolsPath“C:\ Program Files \ Microsoft SDKs”找到“AxImp.exe” \ 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” – FAILED。

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

它看起来应该安装该工具,c:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools \ AxImp.exe是正常位置。 您可以在自己的计算机上validation这一点。 我不知道AppHarbor究竟做了什么,但他们故意删除该工具的可能性很大。

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

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