CAS не работает для сопоставленного диска VS2010

У меня есть проект с использованием дозвуковых, которые я разработал в Visual Studio 2008 на диске C:. Нет проблем. Я только что обновился до Visual Studio 2010 (и по мере того, как мой компьютер случайно умер, теперь я запускаю Windows XP, виртуализованную с VirtualBox).

Проект запускается без жалобы на диск C:, но если я запустил его из G: (сопоставленный диск, который указывает на раздел на базовом ПК), я не могу запускать дозвуковые приложения пользовательских инструментов (ошибка, указанная ниже), ИЛИ запустить веб-приложение ( "начать без отладки" дает мне: не удалось запустить мониторинг изменений в "G:\GPNNT\GpnntApp\GpnntApp" ).

Это решение .net 3.5.

enter image description here

Казалось бы, это хорошо документированная и простая проблема. Я предпринял следующие действия:

(1) ФАЙЛ BATCH

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 zillion, все безрезультатно)

(2) Утилита конфигурации .Net 2.0 (Панель управления > Инструменты администратора)

Используя инструмент анализа, обе настройки, сделанные в пакетном файле выше, применяются к файлам на диске.
Я также попытался настроить группу интрасети на FullTrust (что-то, чего я бы не хотел делать!). Нет разницы.

(3) loadFromRemoteSources

Разумно предположить, что, хотя сам проект использует только .NET 2, сам VS2010 может использовать .NET 4 внутренне. После еще нескольких поисковых запросов (например, здесь), я добавил

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

к файлам machine.config.net версий.

(4) Обновление до VS2010 SP1

Ни один из них не сделал разницу. Может ли кто-нибудь пролить свет на это, прежде чем мое кровяное давление достигнет опасно высоких уровней? Полагаю, я могу вернуться, чтобы запустить все с C:, но в этот век виртуализации это кажется немного смешным. Мне действительно нужны данные в другом месте для виртуальной машины.

Я отмечаю this Сообщение SO имеет ту же проблему и обвиняет тестовые проекты, что не является ужасно удовлетворительным. У меня также нет тестового проекта, хотя там могут быть ссылки на тесты, похороненные в DLL SubSonic где-то, я полагаю.

LAST MINUTE ADDITION: Я также замечаю, что SQL Server 2005/8 не будет разговаривать с G: (например, восстановить резервную копию оттуда), и предположить, что любое решение также позволит это возникнуть. Это было бы еще лучше.

Ответ 1

Для потомков, вот некоторые результаты моих исследований.

Связанные диски в VS 2010:

  • есть начальное сообщение о загрузке проекта из небезопасного место нахождения. Это фиксируется с использованием CASPOL, как описано. CASPOL довольно гибко со своими URL-адресами и принимает оба показанных формата. CASPOL - отключен в .NET 4 по умолчанию, поэтому настройки не будут иметь значения (см. причины здесь).
  • После этого есть еще несколько проблем, я не документировал их, но после исправления каждого из них появилось другое. loadFromRemoteSources исправил одно сообщение, но я ничего не смог коснуться "Не удалось запустить мониторинг изменений...". Как часть этого, ответ Кристофа, вероятно, правильный (по крайней мере для .NET 2) в том, что вам, вероятно, придется настраивать каждую сборку на диске, что совершенно нецелесообразно для проектного диска VS.

Итак, неудивительно, я думаю, что будет просто слишком больно хранить проекты VS на сопоставленном диске. Исходный контроль и локальный проект - это путь. Честно говоря, отсутствие отмены на сетевом диске - это боль для разработчиков, а также IMO.

НО

исходная проблема была не такой, что мне нужен сетевой диск, так как я не хотел хранить проект на C: моей VM (т.е. я хотел иметь возможность резервировать данные отдельно от VM основанного на диске).

Ответ, который все время смотрел мне в лицо, заключался в том, чтобы создать второй виртуальный диск и прикрепить его к виртуальной машине как G:. Это локальный диск, поэтому я не получаю все проблемы доверия, но я получаю полное разделение данных. Я сохраняю все данные на этом диске в папке Dropbox, предоставляя мне полную резервную резервную копию в реальном времени, и что я счастлив.

Ответ 2

Возможно, я ошибаюсь (я не смотрел это), но я думаю, что вам нужно работать с сильными именами при работе с сопоставленными дисками. Как

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, хотя это больно.

Если возможно, используйте что-то более современное.