|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
||||||
.NET 4.x Включение содержимого App.config в сборку01.06.2017, 15:38. Показов 5831. Ответов 22
Всем привет!
Пишу плагин для CRM. Он встраивается туда как один файл *.dll, поэтому сторонних файлов библиотек и конфигов там быть не может (на диске не позволяет разместить, только в базе). Далее работает на сервере. Ну библиотеки я включил в GAC, а вот App.config не знаю как пристроить - там у меня нужная инфа для подключения к базе SQL, откуда данные берутся. Включить в сборку его вроде никак нельзя... Как встроить содержимое конфига в сборку, чтобы все в dll было? Код App.config (сформирован автоматически вместе с ADO.NET Entity Data Model):
0
|
||||||
| 01.06.2017, 15:38 | |
|
Ответы с готовыми решениями:
22
Кавычки в app.config Шифрование app.config Изменить данные в app.config |
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 01.06.2017, 16:41 | |
|
SHIFT_969, нужно продублировать используемые настройки в settings или в ресурсы и спокойно пользоваться. Данные, конечно же, уже не будут доступны через ConfigurationManager, но это не есть проблема ниразу.
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|
| 01.06.2017, 16:47 [ТС] | |
|
0
|
|
|
|
||
| 01.06.2017, 16:52 | ||
|
Корректный Xml можно привести к коду модели (даже в сети есть конвертеры). Так вот, сделайте в своей dll набор нужных классов, а файл конфига грузите в ресурсы, как сказано выше. Когда требуется-десериализуйте Xml форматтером ваш конфиг в объекты и пользуйтесь его свойствами. Просто это будет более удобно, чем просто парсить Xml, плюс строгая типизация.
1
|
||
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 01.06.2017, 16:56 | |
|
insite2012, даже этого не требуется. Насколько я понял, ТС-у нужно просто строку подключения сохранить в ресурсах и всё. Просто строку. Тут даже без ресурсов можно обойтись, просто строку в коде где-нибудь зашить и всё.
Добавлено через 2 минуты SHIFT_969, вы же представляете, что такое строка подключения?..
1
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
||
| 01.06.2017, 20:26 [ТС] | ||
|
Есть такая идея: поместить файл App.config в папку на сервере, а в коде к нему обратиться и получить инфу. Можно так сделать? Доступ к файловой системе на сервере из кода у меня есть, проверял. Не по теме: пишу уже с другого компа, нет возможности самому проверить
0
|
||
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
||||||
| 02.06.2017, 08:13 | ||||||
|
SHIFT_969, вообще никуда. Когда будете создавать контекст EF, строку подключения можно передать в конструктор контекста:
1
|
||||||
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|
| 02.06.2017, 12:19 [ТС] | |
|
Usaga, System.ArgumentException: Keyword not supported: 'server'.
У меня вообще "data source" там прописан, но с ним такая же ошибка. Я вижу, что он еще может принимать абстрактный класс DbConnection. Пробовал кинуть ему SqlConnection, но его конструктор еще меньше принимает
0
|
|
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 02.06.2017, 12:25 | |
|
SHIFT_969, вам нужно корректную строку подключения передать. Ту же, что была в app.config.
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|
| 02.06.2017, 12:27 [ТС] | |
|
Usaga, я ее и передавал. Исключение:
Кликните здесь для просмотра всего текста
System.ArgumentException: Keyword not supported: 'data source'.
в System.Data.Entity.Core.EntityClient.Int ernal.DbConnectionOptions.ParseInternal( IDictionary`2 parsetable, String connectionString, IList`1 validKeywords) в System.Data.Entity.Core.EntityClient.Int ernal.DbConnectionOptions..ctor(String connectionString, IList`1 validKeywords) в System.Data.Entity.Core.EntityClient.Ent ityConnection.ChangeConnectionString(Str ing newConnectionString) в System.Data.Entity.Internal.LazyInternal Connection.Initialize() в System.Data.Entity.Internal.LazyInternal Connection.CreateObjectContextFromConnec tionModel() в System.Data.Entity.Internal.LazyInternal Context.InitializeContext() в System.Data.Entity.Internal.InternalCont ext.GetEntitySetAndBaseTypeForType(Type entityType) в System.Data.Entity.Internal.Linq.Interna lSet`1.Initialize() в System.Data.Entity.Internal.Linq.Interna lSet`1.get_InternalContext() в System.Data.Entity.Infrastructure.DbQuer y`1.System.Linq.IQueryable.get_Provider( ) в System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate) в SalesTablesConnection.GetSales.GetSalesT oFill(String[] ids) в SalesTablesConnection.GetSales.Execute(I ServiceProvider serviceProvider)
0
|
|
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 02.06.2017, 12:35 | |
|
Вы модель данных генератором сформировали, как я понял?
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
||
| 02.06.2017, 13:50 [ТС] | ||
|
Нагуглил, что это из-за " в строке, заменил их на одинарные кавычки, запрос проходит...
Добавлено через 1 час 10 минут И теперь ему не хватает entityFramework... Кликните здесь для просмотра всего текста
System.Data.Entity.Core.MetadataExceptio n: Schema specified is not valid. Errors:
AXSalesTablesModel.ssdl(2,2) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. в System.Data.Entity.Core.Metadata.Edm.Sto reItemCollection.Loader.ThrowOnNonWarnin gErrors() в System.Data.Entity.Core.Metadata.Edm.Sto reItemCollection.Loader.LoadItems(IEnume rable`1 xmlReaders, IEnumerable`1 sourceFilePaths) в System.Data.Entity.Core.Metadata.Edm.Sto reItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, IDbDependencyResolver resolver, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerInvariantName, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) в System.Data.Entity.Core.Metadata.Edm.Sto reItemCollection..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths) в System.Data.Entity.Core.Metadata.Edm.Met adataCache.LoadStoreCollection(EdmItemCo llection edmItemCollection, MetadataArtifactLoader loader) в System.Lazy`1.CreateValue() в System.Lazy`1.LazyInitValue() в System.Data.Entity.Core.Metadata.Edm.Met adataWorkspace.LoadAndCheckItemCollectio n[T](Func`1 itemCollectionLoader) в System.Lazy`1.CreateValue() в System.Lazy`1.LazyInitValue() в System.Data.Entity.Core.Metadata.Edm.Met adataWorkspace.GetItemCollection(DataSpa ce dataSpace, Boolean required) в System.Data.Entity.Core.Metadata.Edm.Met adataWorkspace.GetItemCollection(DataSpa ce dataSpace) в System.Data.Entity.Core.Objects.ObjectCo ntext.InitializeMappingViewCacheFactory( DbContext owner) в System.Data.Entity.Core.Objects.ObjectCo ntext..ctor(EntityConnection connection, Boolean isConnectionConstructor, ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, Translator translator, ColumnMapFactory columnMapFactory) в System.Data.Entity.Internal.InternalConn ection.CreateObjectContextFromConnection Model() в System.Data.Entity.Internal.LazyInternal Context.InitializeContext() в System.Data.Entity.Internal.InternalCont ext.GetEntitySetAndBaseTypeForType(Type entityType) в System.Data.Entity.Internal.Linq.Interna lSet`1.Initialize() в System.Data.Entity.Internal.Linq.Interna lSet`1.get_InternalContext() в System.Data.Entity.Infrastructure.DbQuer y`1.System.Linq.IQueryable.get_Provider( ) в System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate) в SalesTablesConnection.GetSales.GetSalesT oFill(String[] ids) в SalesTablesConnection.GetSales.Execute(I ServiceProvider serviceProvider) Добавлено через 4 минуты
0
|
||
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
||
| 02.06.2017, 13:56 | ||
Сообщение было отмечено SHIFT_969 как решение
Решение
SHIFT_969, это и есть Entity Framework, ему не хватает информации о поставщике данных, которая была в App.config. Надо погуглить как это обойти. Такое возникает только при использовании сгенерированной модели.
Если переписать всё в Code First, то будет достаточно только строки подключения. Даже так: переписывать необязательно, можно сгенерировать. Добавлено через 1 минуту app.config только один - у исполняемого модуля (EXE) или у "главной" библиотеки, с которой началось выполнение веб-приложения (web.config).Генерируйте (или пишете) модель из базы данных, но используйте вариант Code First.
1
|
||
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|
| 02.06.2017, 15:16 [ТС] | |
|
Usaga, сгенерировал новую модель Code First. В отладке на моем компе прекрасно работает, а плагином выдает все то же исключение про entityFramework.
0
|
|
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 02.06.2017, 16:01 | |
|
SHIFT_969, я задам один очень идиотский вопрос: а библиотеки EF-а вы рядом с плагином положить не забыли?)) Это я просто уточняю, всякое бывает.
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|||
| 02.06.2017, 16:31 [ТС] | |||
|
Кликните здесь для просмотра всего текста
<?xml version="1.0" encoding="utf-8"?>
<packages> <package id="EntityFramework" version="6.1.3" targetFramework="net452" /> <package id="Microsoft.IdentityModel" version="6.1.7600.16394" targetFramework="net452" /> </packages> (откуда там IdentityModel я уже и не помню, но трогать не буду))) Соответственно я не знаю - может ли он вообще достучаться к ней через GAC... Хотя к другим вроде может. Microsoft.Xrm.Sdk.dll, например, используется. Через GAC. Добавлено через 3 минуты Кстати, я еще пробовал склеивать билд ILMerge-ем, но тогда плагин не может найти мою точку входа, т. к. там несколько dll...
0
|
|||
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 02.06.2017, 16:40 | |
|
SHIFT_969, packages.config используется только для сборки. В релизе оно не учавствует.
По идее, к GAC-у должен быть полный доступ. Там доверенные библиотеки лежат. Попробуйте свою библиотечку (или кастрированный, экспериментальный вариант) использовать в другом своём проекте. И что бы EF в гаке и без app.config это библиотеки. И что за CRM такая?
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|
| 02.06.2017, 16:52 [ТС] | |
|
Usaga, MS Dynamics CRM 2015
0
|
|
|
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
|
|||||||
| 05.06.2017, 16:54 [ТС] | |||||||
|
Не, судя по описанию ошибки ему не хватает именно этой секции из App.config:
Или я все-таки что-то не так прописал?
Как-то прописать в строке подключения? Никак не могу найти формат, по которому она составляется
0
|
|||||||
|
14099 / 9316 / 1349
Регистрация: 21.01.2016
Сообщений: 34,991
|
|
| 05.06.2017, 16:55 | |
|
SHIFT_969, да по идее, всё то вы прописали.
EF совершенно точно может работать без конфига. Я использовал его так в нескольких проектах. И на работе мы EF в коде конфигурируем. Я не знаю, как у вас так получается, что EF ругается. Может вам это поможет.
0
|
|
| 05.06.2017, 16:55 | |
|
Помогаю со студенческими работами здесь
20
Присоединение app.config к exe файлу
Как правильно добавить информацию в app.config? Приложение не читает настройки из app.exe.config
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|