2011-08-24 28 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的映射驅動器。

如果可能的話,使用更現代的東西。