尝试读取VSIX清单文件时出错...系统找不到指定的文件

时间:2011-09-16 22:03:33

标签: hudson vspackage

我正在尝试通过Hudson CI构建Visual Studio Package项目。这是一个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:\哈德森\工作空间\ MyProject_Daily_Compilation \源\ MyProject.VisualStudio \ OBJ \发布\ extension.vsixmanifest

可能导致此问题的原因是什么?

2 个答案:

答案 0 :(得分:8)

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

所以有两个解决方案:

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

或者如果您无法真正更改构建服务器正在运行的用户

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

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

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

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

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

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

答案 1 :(得分:2)

我猜你在运行哈德森作为服务。如果是这样的话“0x80070002 - 系统找不到指定的文件”很可能是因为用户被用来运行hudson没有访问权限。

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