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