Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从TFS获取未绑定的解决方案_Tfs_Export_Unbind - Fatal编程技术网

从TFS获取未绑定的解决方案

从TFS获取未绑定的解决方案,tfs,export,unbind,Tfs,Export,Unbind,我有一个开源项目,我想把它打包成一个包含二进制文件和源代码的.zip文件。该项目托管在CodePlex上,并使用TFS作为源代码管理。我不知道如何导出项目以删除所有源代码管理绑定。这样,人们就可以轻松地在本地打开解决方案,而无需获得登录提示。此功能在Git中称为导出,但我不确定如何在团队中执行相同的操作。源代码管理绑定信息是VS项目和解决方案文件的一部分,很难删除。但是,我知道有两种选择: 如果“获取”项目,请将源文件夹复制/移动到其他位置,然后重新打开解决方案,VS将提供删除源代码管理绑定的功

我有一个开源项目,我想把它打包成一个包含二进制文件和源代码的.zip文件。该项目托管在CodePlex上,并使用TFS作为源代码管理。我不知道如何导出项目以删除所有源代码管理绑定。这样,人们就可以轻松地在本地打开解决方案,而无需获得登录提示。此功能在Git中称为导出,但我不确定如何在团队中执行相同的操作。

源代码管理绑定信息是VS项目和解决方案文件的一部分,很难删除。但是,我知道有两种选择:

如果“获取”项目,请将源文件夹复制/移动到其他位置,然后重新打开解决方案,VS将提供删除源代码管理绑定的功能

或者,要就地执行此操作,您可以在VS中打开源代码管理解决方案,然后单击文件/源代码管理/更改源代码管理。此对话框有一个“取消绑定”按钮,用于删除每个项目的绑定


(注意:在VS2010上测试;不确定您使用的是哪个版本。)

TFS不支持在不绑定的情况下导出源代码。正如Dan Puzey提到的,您只需创建源代码管理的副本并删除源代码管理绑定

对于我的特定项目,我只需复制文件并删除与TFS相关的任何内容。我这样做是作为与TeamCity一起用于开源项目的部署配置的一部分

我计划尽快将此项目切换到Git。

包含以下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   

}
#删除不必要的文件
获取子项-包括*.vssscc、*.user、*.vspscc、*.pdb、Debug-recurse |
%{   
删除项$\ fullname-force-recurse
}  
#从sln文件中删除绑定
获取子项-包括*.sln-递归|
%{   
$file=$\uux;
$inVCSection=$False;
获取内容$file|
%{   
$line=$\u0.Trim();
如果($inVCSection-eq$False-和$line.StartsWith('GlobalSection')-eq$True-和$line.Contains('VersionControl')-eq$True){
$inVCSection=$True
}   
如果($inVCSection-eq$False){
添加内容($file.fullname+'.new')$\u
}   
if($inVCSection-eq$True-和$line-eq'EndGlobalSection'){
$inVCSection=$False
}  
}  
mv($file.fullname+'.new')$file.fullname-force
}  
#从csproj文件中删除绑定
获取子项-包括*.csproj-递归
%{   
$file=$\uux;
获取内容$file|
%{   
$line=$\u0.Trim();

如果($line.StartsWith(“这里有一个替代答案

我将一个解决方案及其项目从一个位置复制并粘贴到另一个位置,当我尝试在新位置打开它时,不会收到连接到源代码管理的提示

当我转到文件->源代码管理->高级->更改源代码管理时,我没有解除绑定的能力。因此,我在文本编辑器中打开了解决方案文件,并删除了以下部分:

GlobalSection(TeamFoundationVersionControl) = preSolution
....
EndGlobalSection

似乎正在工作;我希望它对某人有所帮助。

我正在使用TFS 2010。仅解除绑定的问题之一是,我希望避免复制生成的obj/和bin/文件夹。在解除绑定之前,您可以获取而不是生成。可以在一台机器上设置第二个工作区,然后仅用于解除绑定。(一点巧妙的脚本编写可能也能很容易地实现自动化。)您可以在复制之前清除这些文件。在Visual Studio中进行清理将获得一些文件,但如果您想确定,可以添加此命令,该命令将在文件资源管理器中添加一个右键单击选项,以对bin和obj执行递归删除。此示例适用于.svn文件夹,但您可以轻松地将其适应您的需要。呜呜呜呜!我告诉您编辑此脚本是为了让我永远摆脱TFS源代码管理。以下批评是针对MS的:这应该是一个内置功能。不需要这样的锁定。很棒的脚本!谢谢