3

我正在尝试通过 Hudson CI 构建一个 Visual Studio 包项目。这是一个 Visual Studio 2010 项目。该项目在我的开发箱中构建良好,但由于某种原因,只有在 Hudson 中构建时,我才不断收到以下错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets(378,5):错误:尝试读取 VSIX 清单文件“obj\Release\extension.vsixmanifest”时出错”。该系统找不到指定的文件。(HRESULT 异常:0x80070002)[C:\hudson\workspace\MyProject_Daily_Compilation\Source\MyProject.VisualStudio\MyProject.VisualStudio.csproj]

我已验证该文件存在于磁盘上的以下位置:

C:\Hudson\workspace\MyProject_Daily_Compilation\Source\MyProject.VisualStudio\obj\Release\extension.vsixmanifest

什么可能导致此问题?

4

2 回答 2

9

如果您运行构建的用户没有管理权限,您可能会遇到此类错误。

所以有2个解决方案:

1)以管理权限运行您的构建(构建服务器)。

或者如果你不能真正改变你的构建服务器正在运行的用户

2) 并且您实际上不需要在构建服务器本身上部署 VS 扩展,请将 *.csproj 文件中的 DeployExtension 属性设置为 false。

Microsoft.VsSDK.targets 将该属性默认设置为 true

<DeployExtension Condition="'$(DeployExtension)' == ''">true</DeployExtension>

但是如果您不需要在本地部署该扩展(而是更愿意构建 *.vsix 捆绑包,您可以安全地放置

<PropertyGroup>
    <DeployExtension>false</DeployExtension>
</PropertyGroup>

最初的错误基本上是因为尝试获取部署路径在构建中的某个时刻失败并破坏了成功的 vsix 包生成。通过将该属性设置为 false,构建不会尝试在本地部署扩展(但会生成有效的 *.vsix)

于 2014-05-08T22:48:34.030 回答
2

我猜您将 hudson 作为服务运行。如果是这样,“0x80070002 - 系统找不到指定的文件”很可能是由于用于运行 hudson 的用户没有访问权限。

对此的快速解决方案是将 Hudson 服务的“登录”用户更改为您的普通帐户。

于 2011-10-02T20:45:47.740 回答