2010-05-07 39 views
0

这里就是我想要做的事:我有两个解决方案 - 一个是我主要的应用程序及其相关项目,另一个是我的数据库(VS .dbproj)及其相关项目。我想要做的就是在我的WiX安装程序(它存在于主应用程序解决方案中)中包含来自数据库项目的输出(.dbschema和一些SQL脚本)。这涉及在TFS之前立即构建DB解决方案应用方案。我已经有了那部分工作正常,但我在从我的安装程序引用DB解决方案的输出时遇到问题。问题引用构建输出生成和Visual Studio

我使用相对路径来引用我的WiX安装程序中的数据库项目输出(例如<?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?>),该工具在本地很好地工作,但在通过TFS构建构建时失败。这是因为TFS Build显然会将每个项目的输出目录更改为一个公共位置。而不是我的数据库项目的路径..\..\MyDatabaseSolution\MyDatabaseProject\sql\就像在本地构建时一样,它的设置类似于..\..\..\Binaries\Release\。我怎样才能解决这个问题,并有一个一致的输出位置来引用我的安装程序项目?我正在使用TFS 2005,VS 2008和WiX 3.0。

回答

0

经过一番广泛通过WiX的邮件列表挖,我发现,您可以通过使用$(var.TargetDir)引用当前的安装项目输出目录。因为它只是在TFS构建一个把得到一个目录下的所有项目的输出,我可以通过查看计算机名环境变量,以便为构建服务器的特殊情况:

<?if $(env.ComputerName) = "MYBUILDSERVER"?> 
    <?define DBProjectOutputDir = "$(var.TargetDir)"?> 
<?else?> 
    <?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?> 
<?endif?> 

这样,DBProjectOutputDir总是指向正确的目录。这是一个解决方法,所以我仍然在寻找更好的方法。

0

如果你添加一个引用(到你的数据库应用程序)到VS您的WiX的项目,那么你可以使用下面的变量,而不是相对路径,它会指向一个不断建立文件夹在您的配置当前选择。

$(var.MyDatabaseProject.TargetDir) 

Here is a good reference

+0

这只有在数据库项目与WiX项目处于同一解决方案时才有效。我有两个解决方案,一个是安装程序项目,另一个是DB项目。 – pmdarrow 2010-05-10 14:00:36