Мой исполняемый файл .NET abc.exe
ссылается на несколько сборок. Один из них называется xyz.core.exe
. У меня возникают проблемы с тем, чтобы заставить его работать, когда он запускается из сетевого расположения, указанного через имя общего ресурса с путем, таким как \\localhost\xyz\abc.exe
. Это прекрасно работает, если я подключаю букву сетевого диска с именем Z:
на \\localhost\xyz
и запускаю Z:\abc.exe
.
.NET, похоже, запутался при попытке загрузить сборку xyz.core.exe
из общего ресурса. Выдает исключение System.IO.FileNotFoundException
со следующей информацией журнала слияния:
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable \\localhost\xyz\abc.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = Workstation\arnaud
LOG: DisplayName = xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
(Fully-specified)
LOG: Appbase = file://localhost/xyz/
LOG: Initial PrivatePath = NULL
Calling assembly : abc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.EXE.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.EXE.
Глядя на это с другой стороны, с Process Monitor, я вижу несколько попыток доступа к моему локальному диску по следующим путям:
C:\xyz\xyz.core.dll
C:\xyz\xyz.core\xyz.core.dll
C:\xyz\xyz.core.exe
C:\xyz\xyz.core\xyz.core.exe
как будто загрузчик неправильно понял намерение загрузки с сетевого ресурса и отбросил \\localhost
для использования C:
вместо этого. Кажется, что проблема не связана с настройками безопасности (я никогда не связывался с CASPOL на моей машине), и я использую .NET 3.5 SP1, который позволяет запускать исполняемые файлы из общего ресурса.
И тот факт, что запуск программы через эквивалентную букву сетевого диска работает, должен подтвердить, что это не проблема безопасности.
Проблема не связана с тем, что ссылка также относится к сборке EXE, поскольку она выдает такие же ошибки загрузки со ссылками на простые сборки DLL.
Есть идеи, что может быть причиной этой проблемы с загрузкой? Кто-нибудь еще сталкивался с такой ситуацией?