2009-02-26 82 views
1

我想呼吁的MSBuild上的.sln用后生成集结事件的MSBuild在Visual Studio的命令行

类似:

xcopy "$(TargetDir)$(TargetName)*" "C:\TEST\" /Y. 

我能做到,在短短一个行? ?基本上我想有这样的东西:

msbuild Solution.sln xcopy "$(TargetDir)$(TargetName)" "C:\TEST\" 

我该怎么做?

回答

0

您可以在正在构建的项目中添加一个后期构建事件来完成该副本。

0

编号添加后构建事件将是正在构建的项目文件的一部分。我不知道如何将一个副本添加到命令行的末尾。

您可以在正在构建的项目中添加一个后期构建事件来完成该副本。

0

您的发布后事件是namedconfiguration构建的一部分 - 因此它将作为项目/ config构建的一部分执行。

至少这是我从命令行运行MSBuild的经验。

也许我误解了你的问题。

或许,如果你解释你正在尝试做的,我们可以想出一个办法让解决 - 而不是试图去回答你的具体实施...

3

恕我直言,你最好编辑项目直接文件并将其添加到AfterBuild目标中。这里我们复制一个发布版本程序集DLL,PDB和XML文件的例子:

<Target Name="AfterBuild"> 
    <CallTarget Targets="CopyFrameworkToTools" 
       Condition="'$(Configuration)' == 'Release'"/> 
</Target> 
<Target Name="CopyFrameworkToTools"> 
    <CreateItem Include="$(OutputPath)$(AssemblyName).*"> 
    <Output ItemName="ReleaseFiles" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(ReleaseFiles)" DestinationFolder="..\Tools\" /> 
</Target> 

你可以剥离下来使用拷贝任务的一个线,但我想说明的是融入的MSBuild为您提供了更多的灵活性和控制。

1

你不能这样做。没有办法指定要从命令行执行的任务。你唯一能做的就是指定目标。

您可以:

  • 写小的MSBuild项目文件到您所需要的任务。缺点:您不能在解决方案中引用其他项目的输出,因此您必须明确指定任何文件(通过Visual Studio)将项目生成事件添加到项目文件中。缺点:你必须修改你的项目,这可能并不总是可能的。 (不,您不能从命令行注入该事件)此外,此事件仅作为常规构建的一部分执行。
  • 将一个单独的目标添加到您的项目文件。与构建后事件相同的缺点。与te post生成事件的不同之处在于,您可以明确指定目标为msbuild,并且它只会执行其任务。缺点:与发布后事件相同。
+0

“Regular build”你是什么意思?对项目的任何msbuild调用(通过VS或cmd行)将执行AfterBuild目标。这种方法给你很好的控制。 – si618 2009-02-26 19:53:41