Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 使用石蜡和TFS_Msbuild_Wix_Wix3.6_Paraffin - Fatal编程技术网

Msbuild 使用石蜡和TFS

Msbuild 使用石蜡和TFS,msbuild,wix,wix3.6,paraffin,Msbuild,Wix,Wix3.6,Paraffin,我有一个解决方案,它有许多Wix项目,我想用它们来维护包含文件的列表 据我所知,你通常会指向不同的垃圾箱文件夹来收集所有的文件 当TFS生成解决方案时,它会覆盖OutDir msbuild属性,这会导致所有生成输出转到公共二进制文件目录,而不是每个项目的bin文件夹 那么在这种情况下人们是如何使用石蜡的呢?我已经好几年没有使用石蜡了。最新版本可能会满足您的需要,但让我给您一些附加的想法,您可以使用或不使用石蜡 石蜡、加热和牛脂的一个缺点是它们获取二进制文件,因此必须存在于适当的文件夹中,等等。另

我有一个解决方案,它有许多Wix项目,我想用它们来维护包含文件的列表

据我所知,你通常会指向不同的垃圾箱文件夹来收集所有的文件

当TFS生成解决方案时,它会覆盖OutDir msbuild属性,这会导致所有生成输出转到公共二进制文件目录,而不是每个项目的bin文件夹


那么在这种情况下人们是如何使用石蜡的呢?

我已经好几年没有使用石蜡了。最新版本可能会满足您的需要,但让我给您一些附加的想法,您可以使用或不使用石蜡

石蜡加热牛脂的一个缺点是它们获取二进制文件,因此必须存在于适当的文件夹中,等等。另一种方法是从.sln文件本身及其引用的.proj文件中获取—解决方案可能是确定产品包中哪些二进制文件是和哪些不在其中。您可以在构建时为每个二进制文件自动生成片段,而不必在源代码管理中维护这些片段,也不必实际构建二进制文件

查看WiX 3.6+中的MSBuild集成,特别是。如果这对您不起作用,请尝试以下方法:

我们在最近的一个项目中采取的一种方法完全绕过了热量。我们编写了一个工作流活动来扫描.sln及其.proj引用,并直接为每个二进制文件生成一个WiX片段,它们都只是XML文档。版本3 UUID是基于二进制名称、目标文件夹和构建版本生成的(这一想法值得赞扬),因此,ComponentIDs在不同的构建中是一致的,但在分支到新版本时会自动滚动

解决方案中的某些二进制文件(例如测试夹具)我们不想放入安装程序包中,因此我们在.proj文件中注入了一个新的MSBuild属性以标记“可安装”(或不可安装)。您可以插入一个属性来指定目标目录——在我们的例子中,所有二进制文件都应该放在同一个文件夹中,所以我们不需要这样做。您甚至可以为此构建一个自定义的VisualStudio项目属性页,如果您想获得更多的乐趣的话

这样做的一个好处是,团队中的应用程序开发人员只需向解决方案中添加一个新的二进制文件,或删除一个现有的二进制文件,安装程序包就会在下一次构建时自动同步.msi包中的内容。为安装人员(你的人)节省了很多麻烦


您可以将这些方法结合起来:扫描它为哪些二进制文件构建的解决方案,然后使用该信息将石蜡加热定位到适当的文件夹|文件以供收集。

您可以为所有项目设置公共输出目录,然后使用石蜡从该公共位置拾取文件。如果所有输出(*.dll,*.exe)在一个文件夹中结束,那么就无法知道哪些文件夹属于哪个项目。