0

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

在此处输入图像描述

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

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

4

1 回答 1

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>
于 2013-05-28T12:28:34.590 回答