Настройки. Значение по умолчанию. <свойство> всегда возвращает значение по умолчанию вместо значения в персистентном устройстве хранения данных (XML-файл)

В Vim y, d, p и т. Д. Принадлежат друг другу. Чтобы иметь возможность эффективно использовать Vim, все они должны использовать один и тот же регистр / буфер обмена по умолчанию. Вместо этого используйте "+y или "*y для явного копирования в системный буфер обмена.

Если вам нужен удобный ярлык, вы можете определить для него новую привязку клавиш, например, nnoremap \y "+y.

10
задан ScottCher 31 October 2008 в 21:29
поделиться

7 ответов

Я решаю эту точную проблему в приложении, которое я посреди разработки прототипа. Хотя предложение Палубного судна взламывания файлов конфигурации вместе должно работать, я думаю, что это - довольно неудобный ручной взлом для выполнения как часть цикла сборки. Вместо этого я решил, что самое чистое решение состоит в том, чтобы просто иметь каждый синтаксический анализ библиотеки ее собственный library.dll.config файл. Его все еще не прекрасный и требуется некоторый дополнительный шаблонный код, но это, кажется, единственный способ обойти византийский способ, которым .NET обрабатывает эти app.config файлы.

2
ответ дан 4 December 2019 в 00:27
поделиться

Я использую эту технику все время времени. Часто у меня есть блок библиотеки, который требует определенных настроек, и мне нужны они набор оба путем тестирования проектов, а также основных "исполняемых" блоков - быть ими проекты службы Windows или веб-проекты.

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

Вот отрывок, который показывает такой атрибут:

Вот отрывок, который показывает значение по умолчанию ConcordanceServicesEndpointName в сгенерированном классе:

    [global::System.Configuration.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("InternalTCP")]

    public string ConcordanceServicesEndpointName {
        get {
            return ((string)(this["ConcordanceServicesEndpointName"]));
        }
    }

То, что Вы хотите сделать, скопировать раздел конфигурации из app.config файла из проекта блока библиотеки и объединить его (тщательно) в применимый web.config или app.config для основного блока. Во времени выполнения это - единственный файл конфигурации, который используется.

Вот пример:

<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="LitigationPortal.Documents.BLL.DocumentsBLLSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <LitigationPortal.Documents.BLL.DocumentsBLLSettings>
      <setting name="ConcordanceServicesEndpointName" serializeAs="String">
        <value>InternalTCP</value>
      </setting>
    </KayeScholer.LitigationPortal.Documents.BLL.DocumentsBLLSettings>
  </applicationSettings>

Необходимо скопировать эти разделы в "истинный" файл конфигурации.

7
ответ дан 4 December 2019 в 00:27
поделиться

У меня была эта та же проблема в течение долгого времени - это является раздражающим.

Мне нравится идея сделать Ваш собственный файл конфигурации и иметь каждый DLL, анализируют его, хотя все еще могло бы быть легко избежать иметь необходимость изменить конфигурацию.

Одна вещь, которую я сделал в прошлом, чтобы, по крайней мере, сделать это немного легче, состоит в том, чтобы удостовериться что любые значения конфигурации что Setting1. Файл настроек недопустим.

Например, у меня есть класс, который использует LINQ-SQL, чтобы говорить с DB. Таким образом, это имеет файл Setting1.settings, в котором это хранит строку подключения к базе данных. Значение по умолчанию, которое вводится (после перетаскивания таблиц базы данных в разработчика) является строкой подключения dev базы данных.

После того как у меня есть файл DBML, созданный базирующийся прочь тестовой базы данных, я могу войти и отредактировать файл Настроек и тип на имя базы данных как "FAKE_DATABASE".

Тот путь, если Вы используете DLL в другом проекте и затем забываете объединять файлы конфигурации для добавления в надлежащем значении конфигурации для DLL, по крайней мере, Вы получите ошибку при высказывании, что что-то как "Не может соединиться с FAKE_DATABASE".

Конечно, если необходимо работать с разработчиком снова, необходимо будет возвратить значение к значению dev базы данных.

Огромная боль. Они имеют, должен изменить это так или иначе.

2
ответ дан 4 December 2019 в 00:27
поделиться

По-видимому, Ваше приложение пытается читать из файла конфигурации по умолчанию (который является, вероятно, файлом конфигурации приложения). Для проверки добавьте пару "ключ-значение" в файле конфигурации dll к файлу конфигурации приложения, запустите приложение и посмотрите, читается ли это на этот раз.

1
ответ дан 4 December 2019 в 00:27
поделиться

Я видел подобную проблему при использовании app.config. Попытайтесь запустить свое приложение от .exe вместо из Visual Studio и посмотрите, ведет ли это затем себя как ожидалось.

0
ответ дан 4 December 2019 в 00:27
поделиться

Возможно, что в Вашем DLL у Вас есть модификатор доступа (для Settings1. Настройки) набор к Внутреннему (Друг для VB). Попытайтесь изменить Модификатор Доступа на Общественность и посмотрите, позволяет ли это Вашим значениям чтения-записи приложения от конфигурации dll.

0
ответ дан 4 December 2019 в 00:27
поделиться

Я думаю, что просто нашел объяснение того, почему это не работает на мой DLL и мое тестовое приложение. Вот заключительное исключение из блога некоторого парня:

Фиксация для этого должна или удостовериться, Ваше приложение и блоки поддержки имеют то же пространство имен или удостоверяться, что Вы объединяете содержание AppName.exe.config и DllName.dll.config (да при компиляции .dll теперь, это генерирует этот файл, однако проигнорировано, копируете ли Вы его в каталог приложения, и автоматически не объединяется),

Так любой я должен сохранить DLL и Приложение в том же пространстве имен - или я должен объединить содержание файла конфигурации DLL с файлом конфигурации Приложения.

(Не этот вид поражения цель DLL? Я думал, что DLL, как предполагалось, был независимой библиотекой.)

Возможно, это - то, почему это работает на моего коллегу. Производственное приложение совместно использует то же пространство имен как DLL. (Мое тестовое приложение ясно не делает...),

ОБНОВЛЕНИЕ: Я просто сел со своим коллегой недавно и говорил об этой проблеме снова, и кажется, что это никогда не работало на него также, но он не понял это, потому что он установил начальное значение для совпадения с устройством, которое мы пытались использовать. Таким образом, конечно, это, казалось, работало сначала, но как только мы развернули его в другом месте с немного отличающимися настройками, это было повреждено снова.

1
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: