如何防止 Visual Studio 将 SAK 添加到 prj 文件

Posted

技术标签:

【中文标题】如何防止 Visual Studio 将 SAK 添加到 prj 文件【英文标题】:How to prevent Visual Studio from adding SAK to prj files 【发布时间】:2014-11-01 00:19:32 【问题描述】:

我希望从我的 prj 文件中删除以下内容:

  <SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

我只使用源代码管理资源管理器,不希望在我的 prj 和 sln 文件中绑定元数据。

无论我做什么,我已经通过文件 -> 源代码控制 -> 高级 - 更改源代码控制删除了所有绑定,并从 prj 和 sln 文件中手动删除了所有 SCC 内容,Visual Studio 不断更改我的 prj 文件和 sln 文件打开解决方案时。

部分解决方案可能涉及更改注册表 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SourceControl AlwaysAddProjectsLocatedOutsideOfSolutionTree 更改为零会阻止 28 个 prjs 中的 18 个在打开解决方案时自动更新 SCC 内容。

我尝试的另一件事是防止 Visual Studio 在删除所有绑定后重新加载 sln 和 prj 文件。 Visual Studio 将检测到对您的 sln 和 prjs 的编辑并尝试重新加载,包括在签入时是否执行了任何类型的自动合并。

对我来说,解决方案的一部分是,当我删除 sln 上的绑定时,TFS 会突然将我的 sln 视为不是最新的。因此,当我在没有 scc 绑定的情况下提交干净的 sln 时,会发生自动合并,带回我的 scc 绑定,这些绑定是 TFS 服务器上最新版本的一部分。

所以我尝试的解决方案的一部分是使用记事本编辑我的 sln,忽略 Visual Studio 重新加载的任何提示,并在源代码管理资源管理器中签出以进行编辑,直到 TFS 再次识别出我的工作空间版本具有最新的 sln。第一次将我的 sln 视为工作区版本中的最新版本时,签出以进行编辑不起作用,但第二次却如此。

所以这最初是可行的,所有解决方案绑定都被删除了,直到我添加了一个现有项目,该项目之前是解决方案的一部分并且确实包含 Scc 信息,并将源代码控制绑定添加回 sln 文件和其他相关项目。

【问题讨论】:

我很确定您现在需要保留它们。也许在 TFS 2014 / ASP.Net vNext (我正在考虑 Project JSON 文件)中它可能会消失。它们看起来毫无意义,但我认为 VS 需要它们。 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?. 【参考方案1】:

好吧,我只能说它很讨厌。部分解决方案是防止 Visual Studio 在删除所有绑定后重新加载您的 sln 和 prj 文件。 Visual Studio 将检测到对您的 sln 和 prjs 的编辑并尝试重新加载,包括在签入时是否执行了任何类型的自动合并。

部分解决方案可能涉及更改注册表,HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SourceControl AlwaysAddProjectsLocatedOutsideOfSolutionTree 更改零会阻止 28 个 prjs 中的 18 个通过打开解决方案自动更新 SCC 内容。

对我来说,解决方案的一部分是,当我删除 sln 上的绑定时,TFS 会突然将我的 sln 视为不是最新的。因此,当我在没有 scc 绑定的情况下提交干净的 sln 时,会发生自动合并,带回我的 scc 绑定,这些绑定是 TFS 服务器上最新版本的一部分。

所以我的部分解决方案是使用记事本编辑我的 sln,忽略 Visual Studio 重新加载的任何提示,并在源代码管理资源管理器中检查以进行编辑,直到 TFS 再次识别出我的工作空间版本具有最新的 sln。第一次将我的 sln 视为工作区版本中的最新版本时,签出以进行编辑不起作用,但第二次却如此。

在那之后,这就是解决方案中最重要和最直接的部分所在。删除所有绑定,您可能已经这样做了,全部保存。现在在 Visual Studio 选项中将源代码管理插件更改为无,现在关闭解决方案。现在在记事本中打开 SLN 并确保没有 SCC 内容。现在删除您的解决方案级别.SUO。再次打开 sln,您应该没有绑定,并且您应该在源代码管理资源管理器中为 sln 和部分或全部 prj 文件提交待提交的更改,并发出警告说您没有设置源代码控制插件。最后,返回源代码控制选项并将 Team Foundation Server 设置为您的源代码控制。提交删除所有 SCC 内容的 sln 和 prj 文件。

【讨论】:

以上是关于如何防止 Visual Studio 将 SAK 添加到 prj 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Visual Studio 更改我的 csproj 格式

防止 Visual Studio 将 setter 方法限制为内部

防止 Visual Studio 将 setter 方法限制为内部

如何防止 Visual Studio 在 Web 项目中“发布”XML 文档文件?

如何防止 Visual Studio 在调试时启动 WcfSvcHost.exe?

如何防止Visual Studio 2017添加对NugetFallbackFolder的引用