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

Jul*_*sal 3 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

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

Raf*_*ski 8

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

所以有两个解决方案:

1)使用管理权限运行构建(构建服务器).

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

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

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

<DeployExtension Condition="'$(DeployExtension)' == ''">true</DeployExtension>
Run Code Online (Sandbox Code Playgroud)

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

<PropertyGroup>
    <DeployExtension>false</DeployExtension>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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

  • 您无需编辑实际项目。这是该项目的财产。但是,这确实解决了我与TeamCity有关的问题。 (2认同)