Я очень новичок в ASP.net, поэтому я просто выясняю это.
Во-первых, у меня есть несколько отдельных проектов, которые будут размещены на одном сервере.
Во-вторых, они должны иметь возможность совместно использовать определенные параметры (например, строку подключения, параметры конфигурации и т. Д.).
В-третьих, эти общие параметры должны быть настраиваемыми для различных развертываний (test, prod и т. Д.).
Например, у меня есть два проекта: Проект A Проект B
У меня есть настройка с именем «Setting1», которая должна быть доступна обоим проектам.
Значение для «Setting1» должноисходят из одного из этих файлов: «TEST-config.xml», «PROD-config.xml» (будет более двух конфигурационных файлов, но я пока оставлю это простым)
И я хочуиметь только одно место для изменения одного текстового файла, который определяет, какой из файлов * -config.xml будет использоваться:
"WhichSettingsFile.xml"
Вот примерструктура файла:
\ WhichSettingsFile.xml \ TEST-config.xml \ PROD-config.xml \ Project1 \ Project1.csproj \ Project1 \ web.config \ Project1 ... (другие файлы) \ Project2 \ Project2.csproj \ Project2 \ web.config \ Project2 ... (больше файлов)
В настоящее время каждый проект имеет "web.config", подобный этому:
<appSettings file="..\WhichSettingsFile.xml">
...
</appSettings>
Затем у меня есть файл "WhichSettingsFile.xml", подобный этому:
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="SettingsFilenamePrefix" value="PROD" />
</appSettings>
И у меня есть код, подобный следующему:
public static string GetSetting(name) {
string filename = System.Web.Configuration.WebConfigurationManager.AppSettings["SettingsFilenamePrefix"] + "-config.xml";
// Open filename, parse as XML, get the values I need from it.
}
Это означает, что я могу разместить оба проекта на сервере A, установить в файле WhichSettingsFile.xml «PROD», и все настройки будут считаны из"PROD-config.xml".Я могу сделать то же самое для тестового сервера.И все эти значения распределяются между отдельными проектами.
Однако мне нужно иметь возможность редактировать эти файлы в файловой системе, а не встраивать их в dll / сборки.Когда я запускаю проект (ы) из Visual Studio, встроенный хост-сервер asp.net будет развертывать файлы примерно так:
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\lskdjflskj\slkdjfsld\klsjdfwbe
Но с тех пор не будет никакого файла WhichSettingsFile.xmlэто встроено в сборку.Кроме того, файлы «PROD-config.xml» и «TEST-config.xml» не будут включены, поскольку они на самом деле не являются частью «кода» и не копируются.
В идеале, яЯ хочу, чтобы это было в папке развертывания:
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\Project1\(all the compiled files here)
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\Project2\(all the compiled files here)
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\WhichSettingsFile.xml
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\PROD-config.xml
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\TEST-config.xml
Но я не уверен, как это сделать.
Так что мои проблемы: - "WhichSettingsFile.xml" встроен всборка.Я хочу, чтобы это был простой текстовый файл в файловой системе, на который ссылается приложение во время выполнения.Я понимаю, что мне, возможно, нужно избегать использования для этого.Есть ли способ лучше?-Я хочу, чтобы в файловой системе было несколько конфигурационных файлов, также в виде простых текстовых файлов.
Я знаю, что у меня не работает, и, вероятно, запутано.Но есть ли лучший способ сделать это?Спасибо !!