0

LocalDB.mdf ファイルを使用してアプリケーションをビルドしてきましたが、本番環境で使用して、インストール可能なアプリケーションを作成する必要があります。

調査の結果、そのようなファイルを保存するのに最適な場所は/Appdata/Local/フォルダーにあるようです。

LocalDB.mdf ファイルがまだ存在しない場合、または削除されている場合は、そこに新しい LocalDB.mdf ファイルを作成するつもりです。

アプリ リソースに事前に作成された LocalDB.mdf ファイルがあり、最初の実行時にこのフォルダーにコピーしたかった/Appdata/Local/のですが、アクセスが拒否されましたというエラーが表示されます。

そのフォルダに空のファイルを作成できます。

コードは次のとおりです。

string appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string dvAppDataFolder = appDataFolder + @"\MyApp";
        AppDomain.CurrentDomain.SetData("DataDirectory", dvAppDataFolder);

        if (!Directory.Exists(dvAppDataFolder))
            Directory.CreateDirectory(dvAppDataFolder);

        if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
        {
            File.WriteAllBytes(dvAppDataFolder, LokiServer.Properties.Resources.newDB);
        }

さらに、私はこれを正しい方法で行っていますか?

4

1 に答える 1

2

この行

if (!File.Exists(dvAppDataFolder + "LocalDB.mdf")) 

はおそらく間違っています。バックスラッシュがありませんPath.Combine。文字列連結の代わりに使用することをお勧めします。

最後に、フォルダーではなくファイルに書き込みたい

 string fileName = Path.Combine(dvAppDataFolder,"LocalDB.mdf");
 if (!File.Exists(fileName))
 {
        File.WriteAllBytes(fileName, LokiServer.Properties.Resources.newDB);
 }

あなたはそれを正しくやっていますか?場合によります。アプリのデータをターゲット マシンのユーザーごとに分けておく必要がある場合は正しいですが、そのマシンのすべてのユーザーがデータベースを利用できるようにする場合は、次を使用します。

string appDataFolder = Environment.GetFolderPath
                      (Environment.SpecialFolder.CommonApplicationData);
于 2015-06-30T10:22:14.527 に答える