1

私は周りを見回しましたが、リンクされたXMLファイルを開く方法を見つけることができません。私のフォルダ構造は次のようなものです。

...\projects\ConfigService\
...\projects\Shared\
...\projects\WebTool\

Sharedフォルダー内には、WebToolプロジェクトによって変更され、ConfigServiceによって読み取られる単一のXMLファイルがあります(各ファイルがビルドされて実行された後、何度も)。できるだけ簡単にするために、各プロジェクトのXMLで「リンクとして追加」を試してみましたが、実際にリンクされたオブジェクトへのフルパスを取得して開くにはどうすればよいですか?プロジェクトのビルド後にファイルが変更されるため、リンクを使用しますが、再構築はしません。

私が見つけたすべての答えは、リンクされたファイルをプロジェクトのバイナリにパックしようとするか、フラットなリソースではなくクラス/コードを追加するための手順です。

それとも、これを行うためのより良い方法はありますか?

4

3 に答える 3

1

彼にとって最もうまくいった解決策は、Web サイトがルートされているファイル システムの場所に関係なく、このServer.MapPath()方法を使用して自分のフォルダーを見つけることでした。Sharedこれは常に[virtual-directory]\Shared完全に機能するため、構成設定について心配する必要はありません。

于 2012-08-22T19:16:55.610 に答える
1

app.configこれを解決するためにファイルを使用したいと思います。方法は次のとおりです。

WebTool サービスと Config サービスでapp.config、次のテキストを含むファイルを追加します。

<configuration>
<appSettings>
    <add key="XmlFileLocation" value="c:\folder\projects\shared\myfile.xml" />
</appSettings>
</configuration>

次に、次を使用して、各プログラムのファイルの場所を取得できます。

string filepath = ConfigurationManager.AppSettings["XmlFileLocation"];

ただし、プロジェクトに System.Configuration への参照を追加する必要があります。

幸運を!

于 2012-08-22T18:38:25.340 に答える
0

2 つの方法 1 つは、展開する方法によって異なります。それらがすべて同じフォルダーに移動する場合、Oded氏のソリューションは迅速かつ簡単です。より複雑なフォルダー構造にデプロイする場合

MyApps
  Shared
  ConfigService
  WebTool

それを反映するフォルダー構造を作成し、各プロジェクトの出力ディレクトリを関連するディレクトリに設定します (デフォルトの bin\debug bin\release ではなく)。各ツールからの相対パス (..\MyXmlFile.xml) で取得できます。

とは言っても、私は上記のどちらも好きではありません。

他に何が共有されていますか?dll がある場合は、ファイルまたはコンテンツの場所を返すメソッドが必要であり、その場所がどこにあるかを管理できるようにする必要があります。

PS ファイル システム (どこか) で公開されていることを忘れないでください。削除または変更することを意味のある個人に対処する必要があります。

于 2012-08-22T18:29:51.343 に答える