我正在开发一个 VSTO 插件,我们通过下面的 csproj 设置对话框将其发布到网络共享。
例如,要发布,我们只需单击“立即发布”,它会为 VSTO 插件创建一个安装程序(如何?似乎是自动的)并传输到网络共享。
好的,到目前为止很棒。所以我的问题是,如何通过 TFS 构建配置调用此发布操作?到目前为止,我已经看到您可以通过 MSBuild 发布,但是 TFS(成功构建时自动发布)呢?
我正在开发一个 VSTO 插件,我们通过下面的 csproj 设置对话框将其发布到网络共享。
例如,要发布,我们只需单击“立即发布”,它会为 VSTO 插件创建一个安装程序(如何?似乎是自动的)并传输到网络共享。
好的,到目前为止很棒。所以我的问题是,如何通过 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>