Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Tfs 针对具有不同生成参数的多个项目运行生成_Tfs_Msbuild_Tfsbuild_Msbuild 4.0 - Fatal编程技术网

Tfs 针对具有不同生成参数的多个项目运行生成

Tfs 针对具有不同生成参数的多个项目运行生成,tfs,msbuild,tfsbuild,msbuild-4.0,Tfs,Msbuild,Tfsbuild,Msbuild 4.0,我有一系列的项目需要编译和发布,部署到具有单独MSBuild参数的单独目录中。目前,我对每一个都有单独的构建。例如,项目1: MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.1\PublishDir1 和项目2: MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.2\PublishDir2 但是,我想将它们合并到一个构建中。我遇到的

我有一系列的项目需要编译和发布,部署到具有单独MSBuild参数的单独目录中。目前,我对每一个都有单独的构建。例如,项目1:

MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.1\PublishDir1
和项目2:

MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.2\PublishDir2

但是,我想将它们合并到一个构建中。我遇到的问题是,尽管TFS允许我在生成中指定多个项目,但MSBuild参数适用于所有项目。是否有一种快速方法可以强制每个项目使用一组不同的生成参数,或者我需要创建一个新的生成模板来执行此操作?

恐怕您需要新的生成模板来向模板传递其他参数

但是,如果您试图根据不同的项目将生成输出发布到不同的目录,则可以通过为每个项目设置相同的发布配置文件来实现。为每个同名项目添加发布配置文件。可以使用文件系统发布方法将输出发布到每个项目的不同目录。只需在MsBuild参数中调用发布配置文件

/p:DeployOnBuild=true;PublishProfile=Dev

我建议您创建一个MSBuild
.proj
文件来执行生成,即:

<Project ToolsVersion="4.0" DefaultTargets="Rebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Rebuild" >
<!--Execute proj1-->
<MSBuild Projects="Proj1.csproj" Properties="Configuration=Debug;PublishDir=\\1.1.1.2\PublishDir1;></MSBuild> 
<!--Execute proj2-->
<MSBuild Projects="Proj2.csproj" Properties="Configuration=Debug;PublishDir=\\1.1.1.2\PublishDir2;></MSBuild> 
</Target>
</Project>


我想不出任何不涉及对模板XAML进行黑客攻击的东西。您有正在使用的自定义MSBUILD脚本吗?当我使用TFS2008(直接使用TFSBuild.proj msbuild脚本)时,我们有一个类似的问题需要解决。当时我们所做的是编辑TFSBuild.proj文件以添加其他MSBUILD属性(例如:target_proj1、publishDir_proj1、target_proj2等),这些属性是在生成过程中传入的。然后,在基于正在编译的项目的MSBUILD脚本中,我们将向MSBUILD.exe调用传递适当的属性。IIRC TFSBuild.proj文件在2010年被WF Xaml文件替换。我要纠正这一点。是的,它们在2010年被WF XAML取代,这就是为什么我说我“是”。如果您使用的是XAML,那么就像DaveShaw提到的那样,您将不得不使用XAML来满足您的需求。这难道不会有一个问题,即构建所做的所有其他事情(例如获取最新源代码等)都将丢失吗?我认为这取决于您如何配置构建。我们使用了我描述的方法,效果很好-我想你可以试试,看看它是否对你有效。我得到一个错误“目标“Build”在项目中不存在。”通过这个。@s093294,我更改了默认目标(请参阅更新的代码:DefaultTargets=“Rebuild”),我找到了它。谢谢。我不知道yu可以为非web应用配置发布配置文件。我该怎么办?对不起。我不知道你正在使用非网络应用。无法将发布配置文件添加到非Web应用。我认为在您的情况下,您需要自定义模板,或者您可以尝试这种方法,但这并不完全符合我的要求,但它确实为我节省了一些自己尝试更改构建定义的工作(而且它起了作用)-谢谢