我有一个使用我在 C: 驱动器上的 Visual Studio 2008 中开发的亚音速的项目。那里没问题。我刚刚升级到 Visual Studio 2010(由于我的计算机巧合地死了,我现在正在运行使用 VirtualBox 虚拟化的 Windows XP)。
该项目在 C: 驱动器上运行没有任何投诉,但如果我从 G: (指向基本 PC 上的一个分区的映射驱动器)运行它,我无法运行 subsonic 使用的自定义工具(下面列出的错误),或者运行 Web 应用程序(“不调试就开始”给我:无法开始监视对“G:\GPNNT\GpnntApp\GpnntApp”的更改)。
这是一个 .net 3.5 解决方案。
这似乎是一个有据可查且直截了当的问题。我采取了以下措施:
(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: 运行所有东西,但在这个虚拟化时代,这似乎有点荒谬。我真的希望数据位于与 VM 不同的位置。
我注意到这篇SO 帖子也有同样的问题,并归咎于测试项目,这并不是非常令人满意。我也没有测试项目,尽管我认为 SubSonic dll 中可能有测试参考。
最后一分钟补充:我还注意到 SQL Server 2005/8 不会与 G 对话:(例如,从那里恢复备份),并假设任何解决方案也允许这种情况发生。那将是另一个很棒的东西。