ошибка RG0000: не удалось загрузить файл или сборку 'xxx' или одну из ее зависимостей.В доступе отказано - PullRequest
5 голосов
/ 31 августа 2010

Это для проекта оконных форм под VS2010.

Вот сообщение, которое я получаю от MSBuild:

ошибка RG0000: не удалось загрузить файл или сборка «3rdPartyAssemblyUsedByProject, Версия = 1.1.263.0, Культура = нейтральная, PublicKeyToken = 687bce93d7ce902c 'или одна из его зависимостей. Доступ есть отказано. Строка 174, позиция 5. [C: \ ххх \ SRC \ BackOffice.csproj]

Вот командная строка, используемая для запуска:

c:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/msbuild.exe BackOffice.csproj /p:PlatformTarget=x86

Строка 174 файла resx, которая была приписана к ошибке:

<data name="generalImages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        ...
    </value>
  </data>

generalImages - элемент управления ImageList с изображениями, используемыми для кнопок в форме.

Это нормально работает на моей машине разработчика, но это проблема на моем сервере сборки. Моя рабочая станция - Windows 7 64-разрядная, сервер сборки - Windows 2008 Server 64-разрядная. На сервере сборки установлен Windows 7.1 SDK.

Если я использую msbuild из v3.5 framework, компиляция завершается успешно. Я получаю это предупреждающее сообщение, которое не вызывает у меня никаких проблем на данный момент: Файл проекта содержит ToolsVersion = "4.0", который не поддерживается этой версией MSBuild. Рассматривать проект так, как если бы он имел ToolsVersion = "3.5".

Вся причина этого в том, чтобы на самом деле нацеливаться на платформу 4.0 и использовать такие вещи, как метод по умолчанию, которые не работают при нацеливании на 3.5.

Я искал и искал на этом. Я сталкивался с большим количеством обращений, связанных с 32-битными / 64-битными проблемами - где формат изображения является проблемой, но это не моя проблема. Эта ошибка говорит "Доступ запрещен". Я использовал fuslogvw, чтобы попытаться выяснить, откуда поступил отказанный доступ - но я не вижу, что это так, но на самом деле он не находит никакой сборки. Сборка находится не в GAC, а в касательной директории к файлу проекта, где находится ссылка на файл проекта.

Вот журнал слияния:

* Запись в журнале переплетного устройства (30.08.2010 @ 13:44:48) *

Операция не выполнена. Результат привязки: час = 0x80070002. Система не может найти указанный файл.

Менеджер сборки загружен из: C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ mscorwks.dll Запуск под исполняемым файлом C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ Resgen.exe --- Подробный журнал ошибок следует.

=== Информация о состоянии предварительной привязки === LOG: пользователь = домен \ пользователь LOG: DisplayName = 3rdPartyAssemblyUsedByProject, Версия = 1.1.263.0, Культура = нейтральная, PublicKeyToken = 687bce93d7ce902c (Полностью указано) LOG: Appbase = file: /// C: / Program Files / Microsoft SDKs / Windows / v7.1 / Bin / LOG: начальный PrivatePath = NULL LOG: динамическая база = NULL LOG: база кеша = NULL LOG: AppName = NULL Вызывающая сборка: System.Windows.Forms, версия = 2.0.0.0, Culture = нейтрально, PublicKeyToken = b77a5c561934e089. === LOG: эта привязка начинается в контексте загрузки по умолчанию. LOG: Использование приложения файл конфигурации: C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ ResGen.exe.Config LOG: использование файла конфигурации машины от C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Config \ machine.config. LOG: Ссылка после политики: 3rdPartyAssemblyUsedByProject, Версия = 1.1.263.0, Культура = нейтральная, PublicKeyToken = 687bce93d7ce902c LOG: GAC Lookup был неудачным. ЖУРНАЛ: Попытка загрузки нового URL file: /// C: / Program Files / Microsoft SDKs / Windows / v7.1 / Bin / 3rdPartyAssemblyUsedByProject.DLL. LOG: попытка загрузки нового URL file: /// C: / Program Files / Microsoft SDKs / Windows / v7.1 / Bin / 3rdPartyAssemblyUsedByProject / 3rdPartyAssemblyUsedByProject.DLL. LOG: попытка загрузки нового URL file: /// C: / Program Files / Microsoft SDKs / Windows / v7.1 / Bin / 3rdPartyAssemblyUsedByProject.EXE. LOG: попытка загрузки нового URL file: /// C: / Program Files / Microsoft SDKs / Windows / v7.1 / Bin / 3rdPartyAssemblyUsedByProject / 3rdPartyAssemblyUsedByProject.EXE. Журнал: все пробные URL-адреса были предприняты и не удалось.

На данный момент - я в тупике.Не уверен, куда идти дальше.Любой совет будет приветствоваться.

Cort

Ответы [ 4 ]

3 голосов
/ 08 февраля 2011

Это очень похоже на известную ошибку VS 2010, описанную здесь на blogs.msdn.com . Если это так, то, похоже, Microsoft решила не исправлять это до Visual Studio 11 в ближайшее время, и для многих людей (включая нас: |) ни один из обходных путей, упомянутых в публикации, не работает. Так что удачи.

1 голос
/ 09 ноября 2010

У меня была похожая проблема с ResGen: ошибка RG0000: Не удалось загрузить ссылочную сборку. В моем случае оказалось, что один из файлов проекта в решении не был правильно обновлен до vs2010. Как только я исправил ссылки инструмента на 4.0, он работал правильно.

0 голосов
/ 09 апреля 2014

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

Обходное решение, которое я использовал, обсуждается в разделах комментариев этого сообщения в блоге, которое заключается в поиске j00L и замене его на j0yL в случае возникновения ошибки resx.файлы.Плохая сторона этого обходного пути - вам нужно отредактировать resx.файл каждый раз, когда вы вносите изменения в список изображений.

0 голосов
/ 31 августа 2010

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

...