我有一个 VSIX 包,其中包含几个基于 XML 的自定义设计器。这个包有一个特殊的项目系统,我在其中使用一些自定义构建任务在构建时自动生成代码。
我必须面对的第一个挑战是在我的项目模板中导入 .targets 文件。我无法在项目模板中提供 .targets 文件的完全限定路径,因为我的包版本发生了变化,这使得 vsix 安装程序将其放置在目标计算机上的版本化位置中。我可以解决的方法是添加一个带有包根路径的用户环境变量,然后在项目模板中引用这个环境变量来导入 .targets 文件。它按预期工作,但需要注意。
现在需要注意的是如何在 VSIX 部署过程中创建此环境变量。我尝试使用派生自RegistrationAttribute
. 我覆盖了 Register 方法来运行Environment.SetEnvironmentVariable()
,它仅在我在开发盒上运行项目时才有效。显然,VSIXInstall.exe 并不关心在安装过程中运行属性寄存器。
如果有人可以提出解决此问题的方法,那就太好了。我的时间不多了,已经尝试了很多事情但没有成功:(