CAS не работает для подключенного диска VS2010 - PullRequest
2 голосов
/ 24 августа 2011

У меня есть проект с использованием subsonic, который я разработал в 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 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

(я пробовал миллионы различных форматов URL, но все безрезультатно)

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

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

(3) loadFromRemoteSources

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

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

в файлы machine.config обеих версий .net.

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

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

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

ПОСЛЕДНИЕ МИНУТНЫЕ ДОБАВЛЕНИЯ: Я также заметил, что SQL Server 2005/8 не будет общаться с G:(например, восстановить резервную копию оттуда), и предположить, что любое решение также позволит этому произойти.Это было бы еще одним великим, чтобы иметь.

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

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

Сопоставленные диски в VS 2010:

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

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

НО

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

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

0 голосов
/ 14 сентября 2011

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

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"

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

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

...