ASP.NET объединяет \ накладывает несколько проектов при сборке \ развертывании - PullRequest
1 голос
/ 26 мая 2011

У меня есть несколько веб-проектов ASP.NET MVC, которым нужен доступ к одному и тому же набору файлов конфигурации. Поскольку у меня есть несколько файлов конфигурации, которые необходимо передать, не является идеальным иметь несколько их копий.

С Maven3 я могу наложить отдельные веб-приложения J2EE поверх других при сборке, чтобы я мог создать один проект, содержащий только файлы конфигурации, и объединить его в каждый из проектов веб-приложения.

Есть ли способ достичь этого с помощью MSBuild или любого другого инструмента сборки .NET?

Мое единственное решение - использовать событие сборки для копирования файлов из одного проекта в другие, но при создании пакета развертывания через MSBuild он упаковывает только те файлы, которые являются частью проекта, и игнорирует любые дополнительные файлы, которые находятся в папке.

Моя конечная цель состоит в том, чтобы включить эти файлы конфигурации в проекты развертывания, созданные с помощью msbuild /t:Package (которые в конечном итоге развертываются в IIS7 со всем необходимым, надеюсь,).

1 Ответ

0 голосов
/ 26 мая 2011

Я нашел решение своей проблемы.

  • Я помещаю свои файлы конфигурации в папку в каком-то общем проекте.
  • Щелкните правой кнопкой мыши файлы конфигурации и выберите Свойства.
  • Убедитесь, Действие построения - Содержимое и Копирование в выходной каталог - Копировать всегда
  • Ссылка "Общий проект" из "Основного проекта 1" и "Основного проекта 2"

Теперь, когда создаются «Основной проект 1» и «Основной проект 2», их эталонный проект («Общий проект») также будет построен, и в нем будут файлы конфигурации, опубликованные в каталоге / bin.

Для доступа к этим файлам конфигурации:

string configPath = HttpRuntime.BinDirectory + string.Format(@"ConfigDirectory\{0}.config", someConfigFileName );

Затем вы можете прочитать этот файл конфигурации (при условии, что он находится в стандартном формате конфигурации .NET), используя:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap
            {
                ExeConfigFilename = configPath
            };
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

var settings = ((AppSettingsSection)config.GetSection("appSettings")).Settings;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...