2011-08-24 61 views
2

我有一个项目使用亚音速,我在C:驱动器上的Visual Studio 2008中开发。那里没问题。 我刚刚升级到Visual Studio 2010(并且我的电脑巧合地死了,现在我正在用VirtualBox虚拟化运行Windows XP)。CAS不适用于VS2010映射驱动器

该项目在C:驱动器上运行时没有抱怨,但是如果我从G:(指向基本PC上的分区的映射驱动器)运行它,我无法运行自定义工具subsonic uses(列出错误)或者运行web应用程序('start without debugging'给我:无法开始监控对'G:\ GPNNT \ GpnntApp \ GpnntApp'的更改)。

这是一个.net 3.5解决方案。

enter image description here

这似乎是一个证据充分的和直接的问题。 我已经采取了以下措施:

(1)的批处理文件

c: 
cd "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 
caspol -all -reset 
caspol -q -machine -addgroup 1 -url file:////g:\* FullTrust -name "G Drive" 
caspol -q -machine -addgroup 1 -url g:\* FullTrust -name "G Drive 1" 


c: 
cd "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" 
caspol -all -reset 
caspol -q -machine -addgroup 1 -url file:////g:\* FullTrust -name "G Drive" 
caspol -q -machine -addgroup 1 -url g:\* FullTrust -name "G Drive" 

pause 

(我已经尝试了无数不同的URL格式,都没有用)

(2)在.NET 2.0配置实用程序(控制面板>管理工具)

使用分析工具,在上述批处理文件中进行的设置似乎适用于驱动器上的文件。
我也尝试将Intranet组设置为FullTrust(我宁愿不这样做!)。没有不同。

(3)loadFromRemoteSources

这是合理的假设,虽然项目本身只使用.NET 2,VS2010本身可能使用.NET 4的内部。经过一番更多谷歌搜索(如here),我说

<runtime> 
    <loadFromRemoteSources enabled="true"/> 
</runtime> 

既.NET版本的machine.config文件。

(4)升级到VS2010 SP1

这些都不做出差的丝毫。 在我的血压达到危险高水平之前,任何人都可以对此做出解释吗?我想我可以重新开始运行C:的所有东西,但在这个虚拟化时代看起来有点荒谬。我真的想把数据放在与虚拟机不同的地方。

我注意到this SO帖子有同样的问题,并责怪测试项目,这不是非常令人满意。我也没有一个测试项目,尽管我可能会在SubSonic dll的某处插入测试引用。

最后一分钟添加:我还注意到SQL Server 2005/8不会与G对话(例如从那里恢复备份),并假设任何解决方案也会允许这种情况发生。这将是另一个伟大的事情。

回答

3

对于后代,这里是我的调查结果。

在VS 2010中映射驱动器:

  • 有来自不安全 位置加载项目的初始消息。如上所述,这是使用CASPOL修复的。 CASPOL很漂亮,它的网址很灵活,并且接受两种显示格式。 CASPOL在默认情况下在.NET 4中禁用了 ,因此这些设置不会产生影响(请参阅原因here)。
  • 之后还有几个问题,我没有记录它们,但是在修复每个问题之后,另一个问题就会出现。 loadFromRemoteSources修复了一条消息,但我没有碰到可能会触及'无法开始监控更改...'的消息。作为其中一部分,Christoph的答案可能是正确的(至少在.NET 2中),因为您可能必须在驱动器上设置每个程序集,这对于VS项目驱动器来说是完全不切实际的。

所以,毫不奇怪,我认为将VS项目存储在映射驱动器上将会非常痛苦。源头控制和本地项目是要走的路。坦率地说,在网络驱动器上缺少撤消对于开发工作来说也是一种痛苦。

原来的问题是没有这么多,我需要一个网络驱动器,我不想存储C上的项目。我的虚拟机(即我希望能够备份数据与基于VM的驱动器映像分开)。

答案在整个过程中凝视着我,是创建第二个虚拟磁盘并将其作为G:附加到VM上。这是一个本地驱动器,所以我没有得到所有的信任问题,但我得到完整的数据分离。我将该驱动器上的所有数据保存在Dropbox文件夹中,同时给我提供全面的实时异地备份,这让我很开心。

0

也许我错了(我没有看到这个),但我认为在映射驱动器上工作时需要使用强名称。像

caspol -m -q -ag My_Machine_Zone -url g:\* Nothing -n "GDrive"

caspol -m -q -ag "GDrive" -strong -file "<pathToFile>" "<assemblyStrongName>" "<assemblyVersion>" FullTrust -n "GDriveFileX" -d "Code Group for fileX"

我总是会创建一个顶级组,使您可以方便地修改或更高版本上删除策略。我认为这是有道理的,尽管这是痛苦的,但不能完全信任基于uri e ven的映射驱动器。

如果可能的话,使用更现代的东西。