Конфликт внешнего раздела конфигурации appSettings (с использованием configSource) и mstest - PullRequest
3 голосов
/ 04 июня 2011

Я использую раздел внешних настроек для настроек приложений, чтобы иметь возможность иметь разные для разработчика, например так:

  <appSettings configSource="appsettings.config" />

Когда я запускаю mstest для этого проекта (это веб-приложение), он вслепуюизменяет этот раздел следующим образом:

  <appSettings configSource="appsettings.config">
    <add key="microsoft.visualstudio.teamsystems.backupinfo" value="1;web.config.backup.af6ed449-e04a-4a52-99d6-b8df0b133316" />
    <add key="microsoft.visualstudio.teamsystems.aspnetdevserver:/" value="56917;True;3448;1;-8588944684513929784" />
  </appSettings>

Что явно неверно, даже в соответствии со схемой.

Причина, по которой необходимо изменить это, состоит в том, чтобы указать информацию о сервере Cassini / dev, который он собирается запустить.Я думаю, что это так, он не изменяет какой-либо другой раздел в файле (очень трудно сказать, так как он также полностью переформатирует файл).

Вопрос в том, какой выбор мне нужен, чтобы получить этоРабота?

До сих пор я только придумал два практических, оба неоптимальных

  1. Отменить внешний конфиг для настроек приложений

  2. Переключитесь с Cassini на cassinidev - тогда я могу прекратить использовать атрибут [AspNetDevelopmentServer ()], который приводит к необходимости изменения web.config

  3. Сконфигурируйте что-нибудь в VS, чтобы предотвратитьэто от этого.Почему его волнует, над каким портом работает его собственная кассини?Я не смог найти никаких настроек конфигурации.

  4. Подождите, пока MS исправит это, поэтому [AspNetDevelopmentServer ()] будет работать с внешними приложениямиSettings

Ответы [ 2 ]

5 голосов
/ 02 февраля 2012

Бит задержки, поэтому я не знаю, относится ли это к вам по-прежнему ...

Но вы можете использовать атрибут file= <appSettings> вместо configSource.
Т.е.:

 <appSettings file="appsettings.config" /> 

Хотя configSource ожидает просто заменить весь раздел, file объединяет разделы.Поэтому, даже если у вас есть дочерние элементы, все равно будут добавлены дополнительные элементы из внешнего файла.

0 голосов
/ 02 июля 2018

я знаю, что это очень поздний ответ, но в июле 2018 года (с Visual Studio 2017) у меня все еще была эта проблема, но вот еще некоторая информация, даже если вы делаете это с файлом или с configSource, проблема с mstestявляется то, что дополнительный файл конфигурации не будет скопирован в вашу папку testresults.

Мы обнаружили, что он отличается от тестов в VSStudio.Там вы можете просто использовать атрибут развертывания на уровне класса.

Для наших тестов, выполняемых на сервере сборки, вам нужно будет выполнить эти шаги

Сначала установите свойства этих дополнительных файлов конфигурации вContent & Copy, если новее

Во-вторых, добавьте файл .testsettings как элемент решения, а не для проекта!

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="TestSettings" 
              id="350a1732-b798-4794-b711-15b44e8504e9" 
              xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Deployment>
    <DeploymentItem filename="project1\file1.config" />
    <DeploymentItem filename="project2\file2.config" />
  </Deployment>
</TestSettings>

Третья ссылка на этот файл в меню Test => Test Settings в VSstudio

А затем проверьте папку testresults на вашем сервере сборки, теперь она должна содержать эти 2 файла

...