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

47
我们刚刚从本地存储文件转移到网络驱动器上进行了一次迁移。问题是现在我的Visual Studio项目也存储在那里(尚无版本控制系统,正在努力解决)。我以前听说过这样做会有问题,但从未听说过解决方法。现在有解决方法吗?
Visual Studio是本地安装的,文件存储在网络驱动器上。我该如何使其正常工作?

33
大家给那个人一点喘息的时间吧!他显然知道情况不妙,但你们又有多少次陷入过困境呢?糟糕的事情总会发生。有时候你没办法立刻处理,也没有钱来解决它。 - Bob King
2
“is there a workaround” 是什么意思?解决什么问题的变通方法? - HAdes
8
为什么每个人都认为多个人在使用同一个目录?原帖中并没有说明代码是供所有开发人员共享的。大家都知道“假设”会带来什么后果。 - Bob King
4
这是一份私人共享,只有我使用它。 - Mike Wills
5
我喜欢人们因为我没有苛责那个提问者没有SC而对我进行了负评。有时候你只能用手头已有的资源去应对,这种情况很常见。 - Bob King
显示剩余14条评论
17个回答

35

虽然我们使用源代码控制,但同时我们也会从网络硬盘上运行所有的项目(不是共享文件夹,而是网络硬盘上的私有目录)。这些网络硬盘每晚都会备份,并且采用了卷影复制技术,因此如果您需要回滚到某个更早的状态,甚至在它被提交到源代码控制之前的版本,您都可以做到。

要使项目正确运行并具有适当的权限,请按照这些步骤进行操作。

基本上,您只需要将共享目录映射到驱动器,然后根据该URL授予所有代码权限。假设您将其映射到"N:\",那么请使用"N:\*"作为您的URL模式。这不是显而易见的,但确实是必须的。


1
你很长时间没有将代码检入源代码控制吗?我从未听说过有人实施影子复制来回滚尚未提交的代码。 - Kilhoffer
7
我们每小时进行影像拷贝......当一个功能完成时,我会检查一下。有时 Visual Studio 崩溃了,你就无法再使用撤销缓冲区了。 - Bob King
1
我曾经因为 Visual Studio 的崩溃丢失了数小时的工作,并且连恢复版本也一并受到了影响... - MagicKat
1
我猜如果我也一直丢失代码,我也不得不实施类似的东西。幸运的是,这种情况还没有发生在我身上。你必须做你必须做的事情,对此我无可指责! - Kilhoffer
答案中的链接已经失效。这个问题在另一个可能是重复的问题中被指出了。 - drescherjm
显示剩余5条评论

20
问题比较一般化,所以我会就我遇到的一个问题给出答案。
我在Mac上使用Parallels虚拟机运行Visual Studio 2010,并通过网络共享在mac端保留了所有项目。然而,Visual Studio无法从那里加载项目程序集文件。仅使用“caspol”设置权限在我的情况下没有帮助。
最终对我有效的是编辑文件"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config"(假设默认安装)来允许Visual Studio从网络共享中加载程序集。
在xml的"<runtime>"部分中,您必须添加:
<loadFromRemoteSources enabled="true"/>

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


我还得在WcfSvcHost.exe.config文件中加入这段代码,才能调试WCF服务。 - Rhyous
你知道是否有VS2012的等效版本吗?或者远程源默认启用了吗? - Michael
我和你处于完全相同的情况,但是你提供的解决方案并没有起作用。我仍然遇到了同样的错误:“在创建或打开C++浏览数据库文件\\192.168.56.128\export\workspace\myproject\.vs\RDPWrap\v16\Browse.VC.db时发生错误。” - Necktwi

12
为了实际回答这个问题,我从jcarle.com复制了这条评论:
在Visual Studio 2010 / .NET Framework v4.0中信任网络共享
如果你和我一样把你所有的代码都存储在服务器上,那么你很可能已经学会了使用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

1
太好了,这个工作得很好。谢谢!PS-我正在以完全相同的方式工作,我喜欢能够使用终端进行Git命令行操作,并使用VM进行Visual Studio工作。 - Bealer

5
如果您有多个人在项目上工作,甚至没有多个人在项目上工作,我不建议这样做。您只是在寻找麻烦。
另一方面,如果只有您一个人在工作,您将避免很多麻烦。但是性能会变得非常差。至于如何使其工作,您只需从VS打开解决方案文件。您可能会遇到安全问题,但可以使用CASPOL进行更正。正如我所说,性能将非常糟糕。再次强调,绝不建议这样做。
请为自己和您的团队着想,尽快安装SVN或其他形式的源代码控制,并将代码放入其中。
编辑:我部分撤回我的评论。Bob King在下面解释了他们从网络驱动器运行VS项目的原因,这很有道理。我会说,除非您像Bob那样出于特定原因而这样做,否则要远离它。否则,请在设置这样的开发环境之前做好准备。

4
我知道这是一个旧的线程,但这是我在寻找解决类似问题时找到的最佳线程。我在虚拟机中使用Win 8.1,主机机器上运行Win 7,使用Visual Studio 2013。尽管我可以打开解决方案,但无法编译。所有其他答案都与旧软件有关,所以我正在添加此答案,以更新这个经常出现的问题,并提供适用于我的解决方案。
以下是我的做法;创建注册表项以允许使用UNC路径作为当前目录。
警告:不正确地使用注册表编辑器可能会导致严重的系统范围问题,可能需要重新安装Windows NT才能纠正它们。Microsoft不能保证由于使用注册表编辑器而导致的任何问题都可以解决。请自己承担风险使用此工具。
在注册表路径下: HKEY_CURRENT_USER \Software \Microsoft \Command Processor 添加值DisableUNCCheck REG_DWORD,并将该值设置为0 x 1(十六进制)。
警告:如果启用此功能并启动当前目录名称为UNC的控制台,则从该控制台启动应用程序并关闭控制台,可能会导致从该控制台启动的应用程序出现问题。
在链接http://support.microsoft.com/kb/156276中找到了这些信息。

有趣。我在一个代码库中遇到了#include问题,似乎当前目录在网络共享构建和本地构建之间发生了变化。同时,在*.pdb文件中也出现了/MP和/FS警告问题,其中/MP触发了使用/FS开关的警告,尽管/MP应该设置/FS。 - Ross Youngblood

4
所以我遇到了类似的问题。Visual Studio无法识别我为驱动器映射的网络位置。有趣的是,它曾经工作过一天。我设置了我的项目并开始工作,没有任何问题。然后我关闭电脑,第二天就什么都不行了。我无法在代码中读写文件,输出可执行文件或者其他操作。我的项目是本地的,但我的输出结果是打算上传到网络上的。
无论如何,问题可能与管理员权限有关,但我在网上找到了一种解决方法:让Visual Studio以某种方式浏览到相关的驱动器。有很多方法可以做到这一点,但VS会魔法般地识别映射的驱动器。我的解决方案是进入项目属性中的调试输出位置,单击“浏览”,并转到之前在网络驱动器上创建的输出位置。然后问题就解决了!
我想发布这篇文章,因为我花了半天时间才找到解决方法,希望能够帮助其他人节省时间。谢谢!

谢谢@Erik。很奇怪,一切都正常工作,但是我的项目拒绝连接到位于网络驱动器上的数据源。我尝试使用网络共享名称更新路径,但它会默认回到驱动器名称。进入“项目属性”>“调试”>“输出”,然后浏览到项目路径,保存即可解决问题。 - Amy

3
如何将这个问题改成每个人都能回答的问题?我和最初的发帖者有完全相同的问题。我有一个VB 2008的副本(最近从VB6升级)。如果我将我的解决方案存储在备份的网络驱动器上,那么它永远不会运行任何东西。即使在程序集中设置了“allowpartiallytrustedcallers”,也会因为访问模块而出现“部分信任的调用者”错误。如果我将文件存储在我(未备份)的C:盘上,那么它将运行得非常好,直到我将其放到共享驱动器上供所有人使用,然后我又回到了同样的问题。这并不是一个很大的要求。我只想能够将解决方案和可执行文件放在共享驱动器上,并在没有关于安全性的荒谬数量的情况下运行它。我不应该把我的所有工作都塞进表单文件里。-编辑:我找到了忽略AllowPartialllyTrustedCallers命令的原因。我正在尝试引用ADODB,它不允许部分信任。那么,没有网络可执行文件可以访问数据库吗?微软到底对公司内网有什么意见呢?

2

我最近也遇到了同样的问题,所以这个答案更多是为了记录我的知识。无论如何,如果有人发现它有用,下面是问题和解决方案。

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

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


2
我曾经在网络驱动器上打开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\'路径才能使用驱动器字母路径打开它。


在我工作的地方,我们都有自己的私人“文档”文件夹映射到网络驱动器,因此我们并没有将其用作共享版本控制解决方案,只是额外的备份副本。(你永远不能太小心) - josh

1
如果有人需要帮助的话,我必须按照此处所述的步骤将网络共享位置添加到Windows企业内部网络区域。特别是,当在网络共享上打开解决方案时(即使用VMware Fusion并从我的Mac硬盘中打开解决方案)Visual Studio会卡在加载时。我还在这种情况下遇到了PostSharp运行的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接