如何对 vsix 项目进行单元测试?

How to unit test a vsix project?

我有一个 Visual Studio 扩展项目。它工作正常,构建到 vsix 中并完成它的工作。我正在使用 VS2017

我想对其进行单元测试。我已经使用 MSTest v2 编写了单元测试。

问题是:当我尝试 build/run 测试项目时,出现一个错误,它没有找到 myProject.dll,显然是因为没有(myProject 构建为 . vsix 文件)。

如何对我的 vsix 项目进行单元测试?

编辑:调试工作正常。
编辑 2:整个输出是 vsmanifest 文件和一个 .vsix 文件。安装和 运行 工作。

答案的 Tl;dr:无法测试 vsix。

你的测试项目应该是一个DLL类型的文件。 例如,在您将其更改为 "CS" 类型的文件后,运行ner 将能够 运行 您的测试

所以我偶然发现了这个 post。问题是 .dll 和 .pdb 文件在 vsix 包中。所以对于单元测试,他们也需要在它之外。

这表明 .csproj 文件中导入的目标存在错误:

<Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />

此目标在构建 vsix 时删除了 dll 和 pdb。它不应该那样做。现在,vsix 只是一个具有特殊名称的 zip 文件。这样我们就可以解压了。

我在工具文件夹中将 7z.exe 添加到我的解决方案中,并且 运行 在 post 构建操作中添加:

"$(SolutionDir)Toolsz.exe" x -aoa "$(TargetDir)$(TargetName).vsix"

现在我的单元测试工作正常。