将 Visual Studio 项目保存在网络驱动器上

Posted

技术标签:

【中文标题】将 Visual Studio 项目保存在网络驱动器上【英文标题】:Keeping Visual Studio Projects on a Network Drive 【发布时间】:2008-10-01 20:46:17 【问题描述】:

我们刚刚完成了将所有文件本地存储到网络驱动器的转变。问题是我的 VS 项目现在也存储在那里。 (目前还没有版本控制系统,正在研究。)我知道我过去听说过这样做的问题,但从未听说过解决方法。有解决办法吗?

所以我的 VS 安装在本地。这些文件位于网络驱动器上。我怎样才能让它工作?

编辑:我知道应该做什么,但是我现在可以使用创可贴来解决这个问题并维护网络驱动器吗?

编辑 2:我确定我不理解某些东西,但 Bob King 有正确的想法。当他回到办公室时,我将与首席 Web 开发人员一起找出临时解决方案,直到我们获得某种版本控制设置。感谢您的想法。

【问题讨论】:

让这家伙休息一下吧!他明明知道情况不好,可是你之前有多少次情况不好?废话发生。有时您没有时间或金钱立即处理它。 “是否有解决方法”是什么意思?解决什么问题? 另外,为什么每个人都认为多个人在使用同一个目录?原始海报没有说代码是为所有开发人员共享的。你知道他们怎么说人们“假设”...... 这是私人共享。除了我之外没有人使用它。 我喜欢人们对我投反对票的方式,因为他们不喜欢我没有因为没有 SC 而击败 OP。有时你只需要利用你所拥有的。它发生了。 【参考方案1】:

虽然我们确实使用源代码控制,但我们也确实从网络驱动器(不是共享目录,网络驱动器上的私有目录)运行我们的所有项目。网络驱动器每晚备份一次,并且还使用卷影复制,因此如果您需要恢复到 之前它进入 SC 的方式,那么您可以。

要让项目在正确的权限下正确运行,请关注these steps。

基本上,您只需将共享目录映射到驱动器,然后根据该 URL 授予对所有代码的权限。假设您映射到“N:\”,然后使用“N:\*”作为您的 Url 模式。您需要通配符并不明显,但您确实需要。

【讨论】:

您必须长时间不将代码检查到源代码管理中?我从来没有听说过有人使用卷影副本来启用甚至尚未提交的代码的回滚。 我们每小时进行一次影子复制...我会在功能完成后签入。有时 VS 会崩溃,并且您不再有撤消缓冲区。 VS 现在有一个恢复选项。我不能说在过去的几年里我曾经丢失过任何代码。那已成为过去 由于 VS 的严​​重崩溃导致恢复版本也被破坏,我损失了数小时的工作量...... 我想如果我也不断丢失代码,我将不得不实现类似的东西。幸运的是,这还没有发生在我身上。必须做你必须做的,对吧?这不能怪你!【参考方案2】:

这个问题比较笼统,所以我会回答我遇到的一个问题。

我在 Mac 上使用 Parallels 虚拟机运行 Visual Studio 2010,同时通过网络共享将所有项目保存在 Mac 端。但是,Visual Studio 不会从那里加载项目程序集文件。尝试单独使用“caspol”设置权限对我没有帮助。

最终让 Visual Studio 从网络共享加载程序集对我有用的是编辑文件 “C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config”(假设默认安装)。

您必须在 xml "" 部分中添加

<loadFromRemoteSources enabled="true"/>

您可能必须更改该文件的权限才能允许写入访问。保存文件。重新启动 Visual Studio。

【讨论】:

我还必须将其添加到 WcfSvcHost.exe.config 以调试 WCF 服务。 你知道有没有VS2012的等价物?还是默认启用远程源? 我的情况确实如此,但您的解决方案不起作用。我得到同样的错误“创建或打开 C++ 浏览数据库文件 \\192.168.56.128\export\workspace\myproject\.vs\RDPWrap\v16\Browse.VC.db 时发生错误。”【参考方案3】:

为了实际回答这个问题,我从 jcarle.com 复制了这条评论:

使用 Visual Studio 2010 / .NET Framework v4.0 信任网络共享

2011 年 1 月 20 日下午 4:10 如果您像我一样将所有代码存储在服务器上,您可能已经了解了如何使用 CasPol.exe 信任网络共享。但是,当从 Visual Studio 2008 (.NET Framework 2.0/3.0/3.5) 迁移到 Visual Studio 2010 (.NET Framework 4.0) 时,您可能会摸不着头脑。

如果您习惯于使用 Visual Studio 命令提示符快速访问 CasPol,您可能会发现您的某些项目似乎不会尊重您的新 FullTrust 设置。原因是,除非您仔细注意,否则 Visual Studio 命令提示符默认为将 .NET Framework 4.0 文件夹添加到其路径中。如果您的项目仍在 .NET Framework 2.0/3.0/3.5 下运行,则还需要为这些版本设置 CasPol。请注意,我个人在使用 1 作为代码组而不是 1.2 方面也取得了更大的成功。

要信任所有 .NET Framework 版本的网络共享,只需使用以下完整路径为每个版本调用 CasPol:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CasPol -m -ag 1 -url file://YourSharePath* FullTrust C:\Windows\Microsoft.NET\Framework\v4.0.30319\CasPol -m -ag 1 -url file://YourSharePath* FullTrust

【讨论】:

甜,这很好用。谢谢! PS - 我的工作方式完全相同,我希望能够将终端用于 Git 命令行,并使用 VM 进行 Visual Studio 工作。【参考方案4】:

如果您有(或者即使您没有)多个人在从事这些项目,我不建议您这样做。你只是自找麻烦。

另一方面,如果您是唯一的工作人员,则可以避免很多麻烦。不过,性能将超出预期。至于如何让它工作,你只需从 VS 打开解决方案文件。您可能会遇到安全问题,但可以使用 CASPOL 进行纠正。不过,正如我所说,性能将会很糟糕。同样,完全不推荐。

帮您自己和您的团队一个忙,安装 SVN 或其他形式的源代码控制,并尽快将代码放入其中。

编辑:我将部分收回我的 cmets。 Bob King 在下面解释了他们从网络驱动器运行 VS 项目的原因,这是有道理的。我会说,除非您像 Bob 那样出于特定原因这样做,否则请远离它。否则,在设置这样的开发环境之前,先让你的鸭子排成一列。

【讨论】:

【参考方案5】:

我知道这是一个较旧的线程,但这是我在寻求解决类似问题时发现的最佳线程,我在虚拟机上使用 Visual Studio 2013(使用 Win 8.1)和主机上的代码(Win 7 )。虽然我可以打开解决方案,但我无法编译。与此相关的所有其他答案都与旧软件有关,因此我添加了此答案,以使用适合我的解决方案更新这个常见问题。

这就是我所做的;制作了一个注册表项,以便能够使用 UNC 路径作为当前目录。

警告:错误地使用注册表编辑器可能会导致严重的系统范围的问题,可能需要您重新安装 Windows NT 才能更正这些问题。 Microsoft 不能保证可以解决因使用注册表编辑器而导致的任何问题。使用此工具需要您自担风险。

在注册表路径下: HKEY_CURRENT_USER \软件 \微软 \命令处理器

添加值 DisableUNCCheck REG_DWORD 并将值设置为 0 x 1 (Hex)。

警告:如果启用此功能并启动具有 UNC 名称当前目录的控制台,从该控制台启动应用程序,然后关闭该控制台,可能会导致从该控制台启动的应用程序出现问题。

在链接中找到此信息:http://support.microsoft.com/kb/156276

【讨论】:

【参考方案6】:

我们把它改写成一个每个人都能回答的问题怎么样?我和最初的海报有完全相同的问题。

我有一份 VB 2008(最近从 VB6 升级)。如果我将我的解决方案存储在备份的网络驱动器上,那么它永远不会运行任何东西。即使在程序集中设置了“allowpartiallytrustedcallers”,它也会在访问模块时给出“部分信任的调用者”错误。如果我将文件存储在我的(未备份的)C: 上,那么它会运行得很好,直到我把它放在共享驱动器上供大家使用,我又回到了同样的问题。

这不是一个大要求。我只是希望能够将解决方案和可执行文件放在共享驱动器上并运行它,而不需要对安全性进行荒谬的废话。我不应该把我所有的工作都塞进表单文件中。

-编辑:我发现它忽略 AllowPartiallyTrustedCallers 命令的原因。我正在尝试引用 ADODB,它不允许部分信任。那么,没有网络可执行文件可以访问数据库吗?无论如何,Microsoft 对 Intranet 有什么看法?

【讨论】:

【参考方案7】:

不要这样做。如果您有源代码控制(版本控制),您不希望您的文件在网络驱动器上。它完全绕过了您想要通过使用源代码控制实现的所有目标,因为一旦您的文件位于网络驱动器上,任何人都可以修改它们......即使您当前正在构建项目。咔嚓!

PS:这听起来像是典型的过度工程案例。

【讨论】:

如果在 Mac 上使用类似 parallels 或 VMWare 的 VM,这是不切实际的。您不希望在一台开发机器上真正拥有两个代码库。【参考方案8】:

您有什么具体问题吗?

如果您允许多人打开解决方案,您的第一个问题将是 .NCB 文件 (Intellisense) 将被独占锁定,并且只有一个用户能够浏览类树。当然,您有可能让一个用户的更改覆盖其他用户的更改。

【讨论】:

【参考方案9】:

所以我遇到了类似的问题。 Visual Studio 无法识别我为任何驱动器号映射的网络位置。有趣的是,它工作了一天。我建立了我的项目并开始研究它并且没有任何问题。然后,我关闭了,第二天没有任何效果。我无法在代码中读/写文件,无法输出我的可执行文件或任何东西。我的项目是本地的,但我的输出是打算在网络上抛出的。

无论如何,问题可能与管理员上下文有关,但我在网上挖掘时发现的一种解决方法是让 Visual Studio 以某种方式浏览到有问题的驱动器。有很多方法可以做到这一点,但 VS 将神奇地能够识别映射的驱动器号。我的解决方案是转到项目属性中的调试输出位置,单击浏览并转到我以前在我的网络驱动器上制作的输出位置,瞧!!!

我想提出这个问题,因为我花了半天时间试图弄清楚这一点,并认为它可能会为其他人节省一些时间。非常感谢,祝你好运!!!

埃里克

【讨论】:

【参考方案10】:

我最近遇到了同样的问题,所以这个答案更多是为了跟踪我自己的知识。无论如何,如果有人觉得它有用,下面是问题和解决方案。

问题: NET 4.0 项目、SVN 存储库、签出文件夹位于本地驱动器上,引用的程序集由构建服务器构建并在网络驱动器上可用。 W7 上的 Visual Studio 能够添加引用但无法构建项目。

解决方案: 由于 NET 4.0 不再自动为网络程序集提供沙箱,因此您必须通过 machine.config 更新使它们完全受信任。 http://msdn.microsoft.com/en-us/library/dd409252.aspx

【讨论】:

【参考方案11】:

我在网络驱动器上打开 Visual Studio 项目时遇到了类似的问题,我通过在本地 C:\ 驱动器上创建指向 UNC 目录的符号链接来修复它

例如

mklink /D "C:\Users\Self\Documents" "\\domain.net\users\self\My Documents"

然后您可以使用 C:\Users\Self\Documents\ 路​​径而不是 UNC 路径打开项目

(您必须小心,因为如果您在浏览项目时双击符号链接,Visual Studio 会自动将您重定向到“\\domain.net..”路径。我必须复制粘贴'C:\Users\' 路径以使用驱动器号路径打开)

【讨论】:

在我工作的地方,我们都有自己的私有“文档”文件夹映射到网络驱动器,所以我们并没有真正将它用作共享版本控制解决方案,只是一个额外的备份副本。 (你永远不能太小心)【参考方案12】:

如果我对您的理解正确,您的 Visual Studio 项目文件存储在网络驱动器上,您可以从那里运行它们。这就是我所做的,没有任何问题。您需要确保已设置安全策略。您可以使用Caspol 来执行此操作,或通过控制面板-管理工具菜单。

【讨论】:

【参考方案13】:

应该警告您,Visual Studio 中的某些功能将拒绝使用网络驱动器。

例如,SQL Express 用户实例的 mdf 文件必须位于本地驱动器中。

再举个例子,如果你使用 UNC 路径,你必须确保它们足够短。

【讨论】:

【参考方案14】:

在尝试将 vc11 与在 mac 上运行的并行程序一起使用时,我发现这很有帮助: http://social.msdn.microsoft.com/Forums/en-US/toolsforwinapps/thread/2ffdcb01-c511-4961-834b-afd5f2fbb8e1,具体来说:

1) 您可以从本地调试切换到远程调试,并将机器名称设置为'localhost'。这将在您的本地机器上进行远程部署(因此不使用项目的目录)。您无需安装 Remote Debugger 工具,也无需启动 msvsmon 即可在 localhost 上运行。

【讨论】:

【参考方案15】:

如果这对其他人有帮助,我必须按照here 中列出的步骤将网络共享位置添加到 Windows Intranet 区域。特别是,当我在网络共享上打开解决方案时(即使用 VMware Fusion 并从我的 Mac 硬盘驱动器打开解决方案)时,我遇到了 Visual Studio 负载挂起的问题。在这种情况下运行 PostSharp 时我也遇到了问题。

【讨论】:

【参考方案16】:

“我怎样才能让它工作?” 你有几个选择:

选择 A: 1. 将所有文件移回本地硬盘 2. 在您的机器上实施某种类型的备份软件 3.测试所述备份解决方案 4. 继续编码

选择 B: 1. 获取免费源代码控制产品之一的副本并实施。 2. 确保已备份 3. 测试一下

选择 C: 使用众多可用的在线源代码控制存储库之一。谷歌、SourceForge、CodePlex 等等。

【讨论】:

【参考方案17】:

好吧,我的问题是你为什么要问这个。将其存储在网络驱动器上时它不起作用吗?我自己没有尝试过,我可以想象的一个问题是从网络驱动器(即来自 bin\Debug 目录,也位于网络驱动器上)运行的 .NET 代码将以沙盒模式运行,除非你乱用 CASPOL(或者使用 3.5 SP1,我听说它已经消除了这个障碍)。

如果您有具体问题,请询问。永远不要问“为什么做 X 不起作用?”。

您并不是说您是一个人还是多个人访问同一个远程驱动器,但我假设您只是每个网络目录的一个人。它是否正确?如果没有,不,没有创可贴。获取版本控制,将文件移回本地磁盘。

【讨论】:

以上是关于将 Visual Studio 项目保存在网络驱动器上的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2008 自动恢复目录位置更改

无法在 Visual Studio 2013 中创建新的 Web 项目

Visual Studio 2012项目已在环境提示之外进行了修改

Visual Studio 2019:如何将您的项目保存到 Azure DevOps?

有没有办法在 Visual Studio 中将 Outlook 项目保存为 pdf?

如何以不同的名称保存 Visual Studio 项目(如另存为)?