CAS不适用于VS2010映射驱动器

时间:2011-08-24 06:12:29

标签: visual-studio-2010 subsonic mapped-drive caspol

我有一个使用我在Visual Studio 2008中在C:驱动器上开发的亚音速项目。没问题。 我刚刚升级到Visual Studio 2010(因为我的计算机巧合地死了,我现在正在运行使用VirtualBox虚拟化的Windows XP)。

该项目在C:驱动器上没有投诉,但是如果我从G:(一个指向基本PC上的分区的映射驱动器)运行它,我无法运行自定义工具亚音速使用(错误列在下面),或运行Web应用程序('start without debugging'给我:无法开始监视对'G:\ GPNNT \ GpnntApp \ GpnntApp'的更改)。

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

enter image description here

这似乎是一个记录良好且直截了当的问题。 我采取了以下行动:

(1)BATCH FILE

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

(我尝试了多种不同的网址格式,但都无济于事)

(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:上运行一切,但在这个虚拟化时代看起来有点荒谬。我真的希望数据位于VM的不同位置。

我注意到this SO帖子有同样的问题,并指责测试项目,这不是非常令人满意。我也没有测试项目,尽管在我认为的某个地方可能存在埋在SubSonic dlls中的测试参考。

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

2 个答案:

答案 0 :(得分:3)

对于后代,以下是我调查的一些结果。

VS 2010中的映射驱动器:

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

所以,毫不奇怪,我认为将VS项目存储在映射驱动器上真的太痛苦了。源控制和本地项目是可行的方法。坦率地说,网络驱动器上没有撤消操作对于开发人员来说也是一件痛苦的事情。

BUT

最初的问题并不是我需要一个网络驱动器,因为我不想将项目存储在我的VM的C:中(即我希望能够从VM单独备份数据)基于驱动图像)。

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

答案 1 :(得分: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对映射驱动器给予完全信任是有道理的,尽管这很痛苦。

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