TFS在构建后发布csproj

时间:2013-05-24 10:52:53

标签: c# visual-studio-2010 visual-studio-2012 tfs csproj

我正在开发一个VSTO Addin,我们通过下面的csproj设置对话框发布到网络共享。

enter image description here

例如,要发布我们只需点击“立即发布”,它就会为VSTO插件创建一个安装程序(如何?似乎是自动的)并转移到网络共享。

好的,到目前为止很棒。所以我的问题是,如何通过TFS构建配置调用此发布操作?到目前为止,我已经看到你可以通过MSBuild发布,但是TFS(成功构建时自动发布)呢?

1 个答案:

答案 0 :(得分:1)

创建自定义构建并创建自己的msbuild项目文件。

但是,一旦您成功发布,您将无法管理由VisualStudio增加的发布号,并且您将不得不自己做。在您遇到问题后,将此更改签入TFS ....

一些帮助:

  <Target Name="Publish" >
    <MSBuild Projects="$(ProjectFile)" Targets="Publish" BuildInParallel="true" Properties="Configuration=Release;ImportProjectFile=true;PublishDir=..\$(LocalPublishFolder)\;PublishUrl=$(PublishFolder);InstallUrl=$(PublishFolder);UpdateUrl=$(PublishFolder)" > <!--ApplicationVersion=$(ApplicationVersion);-->
      <Output ItemName="ProjectOutputs" TaskParameter="TargetOutputs"/>
    </MSBuild>
    <UpdateApplicationRevision ProjectFilePath="$(Project2Publish)" />
    <ItemGroup>
      <_CopyItems Include="$(LocalPublishFolder)\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(_CopyItems)" DestinationFiles="@(_CopyItems->'$(PublishFolder)\%(RecursiveDir)%(Filename)%(Extension)')" />
    <RemoveDir Directories="$(LocalPublishFolder)" />
  </Target>


<UsingTask TaskName="UpdateApplicationRevision" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
   <ParameterGroup>
        <ProjectFilePath ParameterType="System.String" Required="true" />
    </ParameterGroup>
        <Task>
          <Reference Include="$(MSBuildToolsPath)\Microsoft.Build.dll" />
          <Reference Include="System.Xml" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
      var project = new Microsoft.Build.Evaluation.Project(ProjectFilePath);
      var property = project.GetProperty("ApplicationRevision");
      property.UnevaluatedValue = "" + (System.Int32.Parse(property.EvaluatedValue) + 1);
      project.Save();
]]>
        </Code>
    </Task>
</UsingTask>