我们有一个引用wixlib文件的安装程序来获得一些常用的功能。wixlib在另一个解决方案中构建,然后移动到该解决方案中的一个文件夹中。当我们尝试使用TFS构建来构建安装程序时,我们从light.exe得到一个错误:
light.exe: The system cannot find the file '..\..\..\Core\Common\assemblies\v1.0\Common.Wix.wixlib' with type 'Source'.
我们的常规项目可以引用\assembiles\v1.0,因为我们在那里存储了一些其他公共程序集。我们如何让WiX在构建过程中识别这个位置?
发布于 2012-12-01 01:45:39
由于共享组件和活动解决方案位于TFS中的两个独立项目中,因此必须设置工作区,以便引用的相对路径保持不变。最简单的方法是在TFS构建中设置Workspace中的Build Agent文件夹结构,使$(SourceDir)表示根目录。但是,不要更改您的源代码管理文件夹-它保持不变。
例如,假设您具有以下结构:
-TFS
|-SharedComponents
||-MyComponents
|-ProjectArea
||-MyProject您可能希望在build Workspace中包含以下两个项目:
Source Control Folder Build Agent Folder
---------------------------------------------------------------------------------
$/ProjectArea/MyProject $(SourceDir)\ProjectArea\MyProject
$/SharedComponents/MyComponents $(SourceDir)\SharedComponents\MyComponents这模拟了build文件夹中TFS中的结构,因此允许所有相对路径保持不变。
有关此配置的另一个注意事项:由于共享组件位于另一个位置,因此您可能希望在MyProject中创建一个解决方案文件夹,并将您正在使用的组件添加到该文件夹中。这将确保当任何人从TFS加载您的项目时,它们会自动拉出-他们不必在发现构建错误后返回并单独拉下share components文件夹。
发布于 2012-11-19 20:07:01
您正在直接引用wixlib。因此,据我所知,TFS构建过程应该添加到您的解决方案的TFS项目中。TFS项目不应该依赖于另一个非依赖解决方案的输出。这至少是一种糟糕的做法。在任何情况下,您都不能保证此输出将在您的项目在服务器上构建之前生成。
据我所知,TFS构建为每个构建创建单独的文件夹,并在那里获取源代码。因此,您的解决方案不再处于相同的文件夹层次结构级别。
支持显式地将wixlib复制到安装程序项目中的另一点是:版本控制-在这种情况下,公共库中的任何bug都不会立即破坏引用它的所有项目。您可以逐步升级和测试每个项目。你能想象在每次构建时自动下载任何第三方dll的新版本吗?dll中的任何更改都会立即中断您的应用程序,即使这些更改对您来说并不重要。
https://stackoverflow.com/questions/13387066
复制相似问题