我有一个开源项目,我想将它打包成一个包含二进制文件和源代码的 .zip 文件。该项目托管在 CodePlex 上,并使用 TFS 作为源代码控制。我不确定如何导出项目以删除所有源代码控制绑定。这样人们就可以轻松地在本地打开解决方案而无需登录提示。此功能在 Git 中称为导出,但我不确定如何在 Team 中执行相同的操作。
4 回答
此博客文章包含以下 powershell 脚本,可以在您的源代码管理文件夹上运行,并将从文件中删除源代码管理绑定:
# Remove unnecessary files
get-childitem . -include *.vssscc,*.user,*.vspscc,*.pdb,Debug -recurse |
%{
remove-item $_.fullname -force -recurse
}
# Remove the bindings from the sln files
get-childitem . -include *.sln -recurse |
%{
$file = $_;
$inVCSection = $False;
get-content $file |
%{
$line = $_.Trim();
if ($inVCSection -eq $False -and $line.StartsWith('GlobalSection') -eq $True -and $line.Contains('VersionControl') -eq $True) {
$inVCSection = $True
}
if ($inVCSection -eq $False) {
add-content ($file.fullname + '.new') $_
}
if ($inVCSection -eq $True -and $line -eq 'EndGlobalSection') {
$inVCSection = $False
}
}
mv ($file.fullname + '.new') $file.fullname -force
}
# Remove the bindings from the csproj files
get-childitem . -include *.csproj -recurse |
%{
$file = $_;
get-content $file |
%{
$line = $_.Trim();
if ($line.StartsWith('<Scc') -eq $False) {
add-content ($file.fullname + '.new') $_
}
}
mv ($file.fullname + '.new') $file.fullname -force
}
源代码控制绑定信息是 VS 项目和解决方案文件的一部分,很难删除。但是,我知道有两种选择:
如果您“获取”项目,将源文件夹复制/移动到其他位置,然后重新打开解决方案,VS 将提供删除源代码控制绑定。
或者,要就地执行此操作,您可以在 VS 中打开源代码控制的解决方案,然后单击文件/源代码控制/更改源代码控制。此对话框有一个“取消绑定”按钮,它将删除每个项目的绑定。
(警告:在 VS2010 上测试;不确定您使用的是什么版本。)
这是一个替代答案。
我将一个解决方案及其项目从一个位置复制并粘贴到另一个位置,当我尝试在新位置打开它时,没有提示我连接到源代码管理。
当我转到文件->源代码管理->高级->更改源代码管理时,我没有解除绑定的能力。所以我在文本编辑器中打开了解决方案文件并删除了以下部分:
GlobalSection(TeamFoundationVersionControl) = preSolution
....
EndGlobalSection
似乎正在工作;我希望它可以帮助某人。
TFS 不支持在没有绑定的情况下导出源代码。正如 Dan Puzey 所提到的,您可以只创建源代码管理的副本并删除源代码管理绑定。
对于我的特定项目,我只是复制了文件并删除了与 TFS 相关的任何内容。作为我与 TeamCity 一起用于开源项目的部署配置的一部分,我这样做了。
一旦有意义,我计划将这个项目切换到 Git。