1
我想從TFS服務器解除綁定我的sln文件並在SVN上發佈它是否有任何「簡單」選項來執行此操作。在Visual Studio中打開sln並選擇unbind選項很容易,但是有沒有人嘗試過自動執行此過程?有一種解決方案使用xmlpoke編輯sln文件並刪除綁定信息,但它是否安全?Msbuild和SLN unbindig
我想從TFS服務器解除綁定我的sln文件並在SVN上發佈它是否有任何「簡單」選項來執行此操作。在Visual Studio中打開sln並選擇unbind選項很容易,但是有沒有人嘗試過自動執行此過程?有一種解決方案使用xmlpoke編輯sln文件並刪除綁定信息,但它是否安全?Msbuild和SLN unbindig
我在MSDN代碼庫上發佈了TFS 2010 SDK的一些示例,它們說明了如何使用MSBuild和MSBuild Community Tasks來完成此操作。下面是的MSBuild腳本從WorkItemObjectModel樣本的WorkItemType.csproj文件的一個片段:
<Import Project="$(MSBuildExtensionsPath32)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<ItemGroup>
<SourceFiles
Include="$(SolutionDir)**/*.*"
Exclude="$(SolutionDir)Package/**/*.*;$(SolutionDir)**/bin/**/*.*;$(SolutionDir)**/obj/**/*.*;$(SolutionDir)**/internal.proj;$(SolutionDir)**/*.*scc;$(SolutionDir)$(SolutionName).zip">
<Visible>False</Visible>
</SourceFiles>
</ItemGroup>
<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'"
Inputs="@(SourceFiles)" Outputs="$(SolutionDir)$(SolutionName).zip">
<Delete
Files="$(SolutionDir)$(SolutionName).zip"
Condition="Exists('$(SolutionDir)$(SolutionName).zip')" />
<PropertyGroup>
<PackageDir>$(SolutionDir)Package\</PackageDir>
</PropertyGroup>
<MakeDir
Directories="$(PackageDir)" />
<Copy
SourceFiles="@(SourceFiles)"
DestinationFiles="$(PackageDir)%(RecursiveDir)%(Filename)%(Extension)" />
<Delete
Files="$(PackageDir)**/bin/**/*.*;$(PackageDir)**/obj/**/*.*" />
<RemoveDir
Directories="$(PackageDir)**/bin;$(PackageDir)**/obj" />
<Attrib
Files="@(PackageFiles)"
ReadOnly="false" />
<FileUpdate
Files="$(PackageDir)$(SolutionFileName)"
IgnoreCase="true"
Regex="^\s+GlobalSection\(TeamFoundationVersionControl\).+\n(\s*Scc.*\n)+\s+EndGlobalSection"
ReplacementText=" "
Multiline="true"
Singleline="false" />
<ItemGroup>
<ProjectFiles Include="$(PackageDir)**/*.*proj" />
</ItemGroup>
<FileUpdate
Files="@(ProjectFiles)"
Regex="<Scc[A-z]+>.+</Scc[A-z]+>"
ReplacementText=" " />
<ItemGroup>
<PackageFiles Include="$(PackageDir)**\*.*" />
</ItemGroup>
<Zip
Files="@(PackageFiles)"
WorkingDirectory="$(PackageDir)"
ZipFileName="$(SolutionDir)$(SolutionName).zip" />
<Delete
Files="@(PackageFiles)" />
<RemoveDir
Directories="$(PackageDir)" />
</Target>
簡而言之,這個腳本會複製源文件到一個臨時目錄,將刪除解決方案和項目文件的源代碼管理綁定,然後壓縮源代碼並最終刪除臨時目錄。