Microsoft Robotics StudioとAbsolute Pathの問題
-
22-09-2019 - |
質問
Microsoft Robotics Studio 2008 R2をインストールしたばかりで、パスがどのように処理されているかを発見してショックを受けていることを認めなければなりません。
最初のスタジオは、私の個人的なプロフィールに自分自身をインストールしたいと考えています(これはVistaにあります):
C:\Users\MyUserName\Microsoft Robotics Dev Studio 2008 R2
これは、開発中にロボティクスのスタジオフォルダーにファイルを作成する必要があるためだと思います。 C:\Program Files
ノーゴー。
次に、新しいロボットプロジェクトを作成すると、ロボットスタジオを指す多くの絶対的なパスがプロジェクトに追加されます。プロジェクトをソースコントロールにチェックし、別の開発者が彼のマシンにチェックアウトすると、絶対パスは解決せず、プロジェクトはコンパイルされません。
また、すべてのサービスは、単一のコンピューターで複数の独立したサービスを開発するRobotics Studioフォルダーの単一のフォルダーに収集されるため、少なくとも混乱しているようです。
この混乱を処理するための良い戦略はありますか?
解決
Microsoft Robotics DSS Service Visual Studio Projectを変更して、Robotics Studioのインストールパスに依存しないソースツリーをコンパイルして実行できるものに変更する方法を見つけました。プロジェクトを変更するために必要なことの説明は次のとおりです。
ロボットスタジオビンパスを追加します 道 実行できる環境変数
dssproxy.exe
フルパスを供給せずに。 Robotics Studioフォルダーにロボットファイルフォルダーにロボットスタジオをインストールしました。ロボットスタジオフォルダーにファイルを誤って書き込むことを避けています。開きます プロパティ プロジェクトのページを選択します 建てる タブ。の中に 出力 セクション変更 出力パス に
Debug\bin
. 。 .NETプロジェクトの場合、フォルダにコンパイルすることが慣習ですbin\Debug
とbin\Release
しかし、ロボットホスティングサービス 期待する 名前のフォルダーに住むbin
データを上のフォルダーに保存しますbin
フォルダ。に行きます 署名 タブを選択し、で新しいキーを選択します 強い名前キーファイルを選択します 箱。その時点で独自のキーを生成するか、
sn.exe
新しいキーを生成するユーティリティ。または、キーを作成するための独自のポリシーがある場合は、それに従います。sn.exe
ユーティリティはにありますtools
Robotics Studioのフォルダー。の中に イベントを構築します タブ編集 ビルド後のイベントコマンドライン:
dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." @(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')
議論に注意してください
/keyfile
. 。前のステップで作成された強い名前キーファイルを見つける式を入力します。ファイルをコピーします
DssHost.exe
とDssHost.exe.config
(またDssHost32.exe
とDssHost32.exe.config
ロボットスタジオビンフォルダーからプロジェクトフォルダーに32ビットホスティングサービス)を使用して、これらのファイルをプロジェクトに追加します。をセットする アクションを構築します に コンテンツ と 出力ディレクトリにコピーします に 新しい場合はコピーします. 。のために同じことをします マニフェストファイル あなたのサービスのために。実際、マニフェストファイルはサービスと同じフォルダーにある必要はありませんが、それを出力フォルダーにコピーすると、Xcopy展開を行うことができます。の中に デバッグ タブ変更 外部プログラムを開始します に
DssHost.exe
プロジェクトの出力フォルダー。ファイルを出力フォルダーにコピーするには、プロジェクトを1回ビルドする必要があります。クリアします 作業ディレクトリ. 。をセットする コマンドライン引数 に/p:50000 /t:50001 /m:DSSService1.manifest.xml
マニフェストファイル名をプロジェクトの適切な名前に変更します。ここまたはで使用されるポート番号を変更できます
DssHost.exe.config
ファイル。保護されたWindows環境(UAC)で実行している場合は、httpreserve
特定のポートにアクセスできるようにするコマンド。このコマンドを管理者として実行する必要があります。デバッグ設定はプロジェクトファイルに保存されておらず、各開発者は個人設定を作成する必要があります。
また、更新する必要があります リリース それに応じて構成。
他のヒント
私はMSロボット工学のCCRにのみ興味があったので、これらのアセンブリを使用するプロジェクトへの参照として追加し、それを使用するだけです。
これは問題なく動作します。したがって、スタジオのCCRおよびDSSの一部のみにも興味がある場合は、これがあなたの解決策かもしれません
Reinier
この問題はたくさんあります。最も簡単なソリューションは、ロボット学スタジオをインストールするときにインストールディレクトリを指定することです。そうすれば、マシン間のコードを移動したり、ソースコントロールからチェックアウトするなど、問題が少なくなります。
もう1つのオプションは、RDSに含まれているDSSProjectMigrationを使用することです。プロジェクトディレクトリに対してdssprojectmigrationを実行するだけで、すべてのハードコードされたパスが修正されます。