0

一見単純なAzureプログラムで苦労しています。

私の演習では、「helloworld.exe」を生成するWorkerRoleを作成します。これにより、「helloworld」が出力されて終了します。

Visual Studioを使用してプロジェクトを作成し、プロジェクトソリューション「bin2」に新しいフォルダーを追加しました。メニューオプション「既存のアイテムの追加」を使用してhello.exeを配置します。

次に、ServiceDefinition.csdefにローカルストレージbin2を作成しました。

だから私はRoleEnvironmentで実行可能ファイルを見つけることができます:

string baseDir = RoleEnvironment.GetLocalResource( "bin2")。RootPath.Replace('\'、'/'); 文字列コマンド=Path.Combine(baseDir、@ "hello.exe");

次に、cspack.exeを実行して.csxディレクトリを作成しました。

結果の.csxパッケージは、正しい場所にhello.exeを取得しました:WorkerRole1.csx \ roles \ WorkerRole1 \ approot \ bin2 \ hello.exe

次に、csrun.exeを使用してローカル開発ファブリックを開始し、bin2/hello.exeが見つからないというエラーを親プロセスから取得しました。

hello.exeを「bin2」にコピーするためにcsrunを作成するために何か他のことをする必要がありますか?何か案は?

よろしくお願いします、Ivgard

4

1 に答える 1

0

私はすでにこの質問に答えたと確信しています(おそらく MSDNフォーラムで)?ただし、宣言するローカルリソースは、hello.exeを配置する場所とはまったく異なるパスを提供します。ファイルをプロジェクトに追加すると、そのファイルはロールの残りのコードに含まれます。ローカルリソースを検索すると、データの書き込みと読み取りに使用できる空のディレクトリへのパスが取得されます。これらの2つは、完全に別個の無関係な場所です。

bin2の下にあるhello.exeを見つけたい場合は、相対パスを探すか、%RoleRoot%\ approot \ bin2(または%RoleRoot%\ approot \ bin \ bin2?)を使用します。

于 2011-07-13T22:20:54.987 に答える