C# TFS在生成后发布csproj

C# TFS在生成后发布csproj,c#,visual-studio-2010,visual-studio-2012,tfs,csproj,C#,Visual Studio 2010,Visual Studio 2012,Tfs,Csproj,我正在开发一个VSTO插件,我们通过下面的csproj设置对话框将其发布到网络共享 例如,要发布,我们只需单击“立即发布”,它将为VSTO加载项(how?似乎是automagic)创建一个安装程序并传输到网络共享 好的,到目前为止很好。所以我的问题是,如何通过TFS构建配置调用这个发布操作?到目前为止,我已经看到可以通过MSBuild发布,但是TFS(成功构建时自动发布)呢 创建自定义生成并创建自己的msbuild项目文件 但一旦您成功发布,您将无法管理由VisualStudio增加的发布数量

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

例如,要发布,我们只需单击“立即发布”,它将为VSTO加载项(how?似乎是automagic)创建一个安装程序并传输到网络共享


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

创建自定义生成并创建自己的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>




非常感谢,我们已经通过MSBuild发布了,但没有增加版本号。我试试这个