这是我正在尝试做的事情:我有两个解决方案 - 一个用于我的主应用程序及其相关项目,另一个用于我的数据库(VS .dbproj)及其相关项目。我想要做的是在我的WiX安装程序(存在于主应用程序解决方案中)中包含数据库项目的输出(.dbschema和一些SQL脚本)。这涉及让TFS在主要应用程序解决方案之前立即构建数据库解决方案。应用解决方案我已经让这部分工作正常了,但我无法从安装程序中引用数据库解决方案的输出。
我正在使用相对路径来引用我的WiX安装程序中的数据库项目输出(例如<?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?>
),这在本地工作正常,但在通过TFS构建构建时失败。这是因为TFS Build显然将每个项目的输出目录更改为一个公共位置。而不是我的数据库项目的路径..\..\MyDatabaseSolution\MyDatabaseProject\sql\
就像在本地构建时一样,它被设置为类似..\..\..\Binaries\Release\
的东西。如何解决这个问题,并从我的安装程序项目中获取一致的输出位置?我正在使用TFS 2005,VS 2008和WiX 3.0。
答案 0 :(得分:0)
如果在VS中的wix项目中添加引用(对数据库应用程序),则可以使用以下变量而不是相对路径,它将指向当前在配置中选择了哪个构建文件夹。 / p>
$(var.MyDatabaseProject.TargetDir)
答案 1 :(得分:0)
在对WiX邮件列表进行了大量挖掘之后,我发现您可以使用$(var.TargetDir)
来引用当前的安装程序项目输出目录。因为只有在TFS Build中,所有项目的输出都放在一个目录中,所以我能够通过查看ComputerName环境变量为构建服务器创建一个特例:
<?if $(env.ComputerName) = "MYBUILDSERVER"?>
<?define DBProjectOutputDir = "$(var.TargetDir)"?>
<?else?>
<?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?>
<?endif?>
这样,DBProjectOutputDir
始终指向正确的目录。这是一个解决方法,所以我仍然在寻找更好的方法。