0

スコーピングに関するwiki 記事を完全には理解していない可能性があります。

はじめに:
40 以上のプロジェクトを持つソリューション (ABC.sln) があり、パッケージ管理のために OpenWrap を実装しようとしています。そこで、ソリューションのルート フォルダーで次のことを行いました。

o init-wrap -all

これでうまくいきました。ソリューションのルート フォルダーに SLN.wrapdesc というファイルができました。サブフォルダー内のすべての .csproj ファイルには、OpenWrap ターゲット行が含まれています。
次に、次の方法でソリューションにさまざまなラップを追加しました。

o add-wrap -Name xxx

繰り返しますが、これはうまくいきました。ラップフォルダーにいくつかのラップがあり、プロジェクトから古い参照を削除してもビルドは壊れません。

問題:
ラップのすべてのコンテンツが、それを必要としないプロジェクトであっても、すべてのプロジェクトに送られます。どのラップがどこに行くのかを指定できるようにしたいと思います。たとえば、AjaxControlToolkit は Web プロジェクトにのみ入ります。

試し
たこと まず、AjaxControlToolkit を wrapdesc から削除しました。

o remove-wrap AjaxControlToolkit

これにより、ビルドが壊れます (予想どおり)。次に、次のことを
試しました。1.スコープを使用してラップを追加してみます。

o add-wrap -Name AjaxControlToolkit -scope webproject

これにより、ラップがラップフォルダーに戻されます。その後、プロジェクト ファイルに追加<OpenWrap-Scope>customscope</OpenWrap-Scope>しましたが、ビルドはまだ壊れています。
2. ABC.webproject.wrapdesc というファイルをルート フォルダに手動で追加してみてください。これにより、ソリューションを開こうとすると次のエラーが発生します。

The "exists" function only accepts a scalar value, but its argument "@(_WrapFile->'%(FullPath)')" evaluates to "D:\Projects\ABC.webproject.wrapdesc;D:\Projects\ABC.wrapdesc" which is not a scalar value.

2つのwrapdescファイルが気に入らないと思います。ウィキには「...デフォルトの記述子と一緒に2番目の記述子を追加できます...」と書かれているため、これは奇妙です。

だから今私は立ち往生しています。誰にもアイデアはありますか?

4

1 に答える 1

1

per-msbuildファイルは、依存関係を管理するための推奨されるアプローチではありません。プロジェクトごとにそれを行うことは、OpenWrapの背後にある設計哲学ではないため、システムはこれらのシナリオに対して完全に最適化されていません。

これらのアセンブリから何かが必要ない場合、それを解決する最も簡単な方法は、これらのパッケージのコードを使用せずに参照を使用しないことです。これにより、コードが追加されていない場合は何もロードされない(またはディスク上にある必要さえない)ため、問題は非常に簡単に解決されます。

そうは言っadd-wrap -scope newscopeても、元のmyProject.wrapdescとは別にmyProject.newscope.wrapdescファイルを作成することにより、新しいスコープに新しい依存関係を追加する追加の.wrapdescファイルを作成します。

このプロジェクトごとに実行したい場合は、規則ベースのスコーピングを使用してみましたか?何かのようなもの:

directory-structure: src\*{scope: Web=WebProjects}*

名前にWebを含むsrcの子フォルダー内のプロジェクトを取得し、それらをWebProjectsスコープに割り当てます。

VSは特定のファイルを積極的にキャッシュし、変更が表示されないため、VSを再起動する必要がありますが、これまでのところ、1つは私のプロジェクトで正常に機能していることを知っています。

msbuildファイル自体のカスタマイズは完全にはテストされていないため(wikiエントリは最終的なドキュメントではなく設計仕様であり、すべてがそのように構築されているわけではありません)、機能する場合と機能しない場合があります。http://github.com/openrasta/openwrap/issuesでバグチケットを開くことができるかどうかを確認してください

于 2011-11-30T15:21:41.887 に答える