1つの可能性はembed the XML file into the assembly
、クラスライブラリを作成し、それをWebアプリケーションのリソースとして読み取ることです。WebアプリケーションをWebサーバーに公開すると、パッケージに含まれるのはこのWebアプリケーションのファイルだけになることに注意してください。このWebアプリケーションが含まれていたVisualStudioソリューションに組み込まれている可能性のある一部のプロジェクトとは物理的な関係はありません。
GetManifestResourceStream
参照されているアセンブリから埋め込みXMLを読み取ることができるメソッドを確認できます。
次に例を示します。
// you could use any type from the assembly here
var assembly = typeof(TaskManagerHelper).Assembly;
using (var stream = assembly.GetManifestResourceStream("TaskManager.Data.DataBase.TasksDataBase.xml"))
using (var xmlReader = XmlReader.Create(stream))
{
// ... do something with the XML here
}
ただし、ファイルはアセンブリに埋め込まれているため、変更できないことに注意してください。読み取り専用です。それを変更する必要がある場合、別のアプローチは、このファイルをWebアプリケーションにコピーすることです。たとえば、適切な場所はApp_Data
特別なフォルダです。この場所にXMLファイルをコピーするコンパイル後の手順を設定することもできます。
そして、それを簡単に参照できます。
string xmlFile = HostingEnvironment.MapPath("~/App_Data/TasksDataBase.xml");
using (var xmlReader = XmlReader.Create(xmlFile))
{
// ... do something with the XML here
}
この場合、XMLファイルは物理的にWebアプリケーションの一部であり、ハードドライブ上にあるため、変更することもできます。