2015-03-30 2 views
0

Используя Visual Studio 2012, я отлаживаю программу, чтобы узнать, почему загрузка файла ресурсов с использованием System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream не работает. Файл копируется в папку bin файла правильно, но при вызове System.Reflection.Assembly.GetExecutingAssembly().Location сообщается, что программа не работает оттуда - она ​​работает от C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\c37f9465\2be54367\assembly\dl3\c92e18ea\e852a1ef_ce6ad001.Не удалось получить встроенный поток ресурсов

Программа представляет собой веб-службу, и ошибка возникает в DLL под названием ConnectSystem.DLL (другой проект в том же решении), и именно этот файл находится в папке Microsoft.NET.

Если это из-за Dynamic ASP.NET Compilation, который выглядит как лучшее объяснение, может кто-нибудь подумать о том, как я могу включить файл конфигурации, пожалуйста?

+0

Пожалуйста, подтвердите свой код. – OldProgrammer

+0

XmlDocument d = новый XmlDocument(); d.Load (новый System.IO.StreamReader (System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream ("ConnectExternalWCF.App_Data.LabelPrintConfig.xml"))); –

+0

Я начинаю думать, что моя проблема может быть связана с использованием IIS. Веб-служба работает под IIS, а на странице веб-настроек свойств проекта он настроен на использование сервера разработки Visual Studio. –

ответ

1

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

Вы можете попытаться установить действие сборки ресурса на Embedded Resource, и файл должен попасть в вашу сборку. Имя может отличаться, обычно оно имеет пространство имен в качестве префикса. Вы можете использовать Reflector, чтобы узнать, что такое фактическое имя.

+0

Спасибо за ваш Помогите! Похоже, что проблема заключается в «теневом копировании» (http://www.ipreferjim.com/2012/04/asp-net-appdomains-and-shadow-copying/), и когда размышление спрашивает, где находится DLL, он сообщает местоположение кэша - и файла ресурсов там не было. Один второстепенный момент - файл Build Action (в свойствах файла) должен быть установлен как «Встроенный ресурс», а не ресурс. Задача решена! –

+0

Хорошо. Файл ресурсов не будет. Он встроен в сборку. В этом вся цель. –

Смежные вопросы