問題タブ [itemgroup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1889 参照

msbuild - MSBuild で末尾のスラッシュを削除する / 規則ベースのファイル名生成

ディレクトリ内の次の規則に基づいて、一連のアセンブリを検索しようとしています。

[.RecursiveDir 部分で別の ItemGroup をバッチ処理して] MSBuild ItemGroup を作成することから始めました。

各項目には末尾にスラッシュがあります。つまり、次のようになります。

言います:

ここで、このリストから一連のファイル名を生成したいと考えています。

問題はそれです:

生成:

のピリオドの前にスラッシュを付けたくありません.dll

これを達成する最もクリーンな方法は何ですか?

HasTrailingSlash 式演算子があることは知っていますが、OOTB Tasks? に RemoveTrailingSlash タスクの兆候はありません。必要な MSBuild のバージョンについて、私はうるさいわけではありません。

0 投票する
1 に答える
1892 参照

msbuild - MSBuild で拡張機能名 (ドットなし) を取得する方法

ItemGroup があり、そのメタデータを MSBuild プロジェクトで識別子として使用してバッチ処理を行います。例えば:

ただし、これは機能しません。拡張機能にドットが含まれているためです。これは Id (BuildStep タスク内) には無効な文字です。したがって、MSBuild は BuildStep タスクで常に失敗します。

ドットを削除しようとしましたが、運がありません。既存の ItemGroup にメタデータを追加する方法はあるのでしょうか? 理想的には、%(TestSuite.ExtensionWithoutDot) のようなものが欲しいです。どうすればそれを達成できますか?

0 投票する
1 に答える
2325 参照

msbuild - MSBuildで文字列のItemGroupを作成します

MSBuild変換を使用するために、任意の文字列/名前の「ItemGroup」を作成したいと思います。次に例を示します。

次に、これらのカテゴリの変換をコンソールアプリに渡したいと思います。例:

引用符で「ItemGroup」と言う理由は、ItemGroupsをこのように使用することが適切かどうかわからないためです。ドキュメントに何も記載されていない限り、ItemGroupsはファイルである必要があります。ただし、上記を使用すると、必須の「インクルード」属性が欠落しているため、エラーメッセージが表示されます。

  • ItemGroupsを使用して上記を行う方法はありますか?
  • あるいは、ItemGroupsを使用せずに上記を達成するためのより良い方法はありますか?
0 投票する
2 に答える
24783 参照

msbuild - MSBuild ItemGroup の包含/除外パターンの問題

問題: 除外属性で渡された値に基づいて、ItemGroups 配列が正しく作成されません。

このスクリプトを実行すると、いくつかのサンプル ファイルが作成され、Include/Exclude 属性に基づいて TheFiles という配列が作成されます。問題は、Exclude がハードコードされていないか、非常に単純なプロパティである場合に、間違ってしまうことです。

ターゲットの DynamicExcludeList は、次のファイルを誤って選択します:
.\AFolder\test.cs;.\AFolder\test.txt

ターゲットの HardcodedExcludeList は次のファイルを正しく選択します:
.\AFolder\test.txt

どんな助けでも大歓迎です、これは私を夢中にさせています。

(そのmsbuild v4に注意してください)

これは出力です。'TheFiles' と 'TheFilesWithHardcodedExcludes' の違いに注意してください。

編集

CreateItem を使用するように上記のスクリプトを更新しましたが、除外するアイテムのリストに複数のパスが含まれている場合 (つまり、CommonFileExclusionの値が変更された場合)にはまだ問題があります。

0 投票する
2 に答える
1972 参照

msbuild - MSBuildパッケージタスク-Web配置

このブログ投稿に従って、カスタムファイルをWeb展開パッケージに追加しようとしています: http ://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageInclusiveExtraFilesOrExclusiveSpecificFiles.aspx

AppBuildFolderに、パッケージにコピーする必要のある他の参照がいくつかありますが、メッセージに出力されたファイルが見つかりません。何か案は?

ありがとうアンディ

0 投票する
1 に答える
4002 参照

collections - 結合されたアイテムグループのMSBuildメタデータ

参加したいアイテムグループが2つあります。

通常の結合を使用すると、4つのアイテムを含むコレクションが得られます。

次のコレクションを作成するにはどうすればよいですか。

0 投票する
1 に答える
101 参照

msbuild - FTP 経由で Web サイトを公開するときに ItemGroup が取得されない

私の MSBuild では、次のようなアイテム グループを作成しました。

次に、FTP 経由で Web サイトを公開しようとします。上記のアイテム グループは、"SomeFileType" を "Content" に変更しない限り取得されません。

カスタム名を使用する理由は、後でビルド ファイルで @(SomeFileType) を使用してこのファイルのコレクションを参照する必要があるためです。

ファイルのアップロードと、このグループのアイテムを参照できるようにするためのアイデアはありますか?

ありがとう!

PSまた、すべてのファイルを確実に取得できるように、次を追加しようとしました。

しかし、このソリューションは理想的ではありません。まず、すべてのファイルをカバーします。次に、ソリューション エクスプローラーで、一部のファイルが 2 回表示されます。

0 投票する
2 に答える
5135 参照

msbuild - MSBuild アイテムは MSBuild タスクで使用できません、エラー MSB4012

次の MSBuild プロジェクト ファイルがあります。

そして、実行するとエラーが発生します:

C:\Repositories\Project\Build\Build.proj(22,16): エラー MSB4012: 式 "@(Base->'%(FullPath)')\Deploy" は、このコンテキストでは使用できません。アイテム リストは、アイテム リストが期待される他の文字列と連結できません。複数の項目リストを区切るには、セミコロンを使用します。

このエラーが発生する理由と回避方法を教えてください。パス内を取り除く必要があるため、Base内でアイテムを使用し、メタデータを介してそれを実行できるようにします。ちょうどそれを使用すると、すべてが正常に機能しますが、これはすべてのパスにあります。ItemGroup..Items%FullPathPropertyGroup..

0 投票する
1 に答える
5569 参照

msbuild - MSBuild、CreateItemをItemGroupに変換して、ターゲットを複数のフォルダーにビンプレースします

短編小説:trueという属性を持つリストがあります。これらすべてのファイルを、たとえば次のように定義されたフォルダのリストにコピーしたいと思います。

someFolder

そのために、今日私がしていることは次のとおりです。

内部でCopyを呼び出すBinplaceというターゲットがすでにあります。問題はそれが単一の要素であり、これらのアイテムの複数でコピーを呼び出す方法がわかりません

そして私のCSPROJファイルで、私はこれを行います:

0 投票する
2 に答える
5926 参照

msbuild - MsBuild: CallTarget で ItemGroup を渡す

MSBuild スクリプトで作成した項目グループのスコープに問題があります。基本的に、私がやりたいことは、2 つの異なるターゲットを用意することです - それらRunUnitTestsを呼び出しましょうRunIntegrationTests- と呼ばれるアイテム グループを生成し、TestAssemblies次に を呼び出しますRunTests。これにより、TestAssembliesどのアセンブリからテストを実行するかが決定されます。

単体テストと統合テストの 2 つの異なるターゲットはどちらもビルド ターゲットに依存し、そこからすべてのコンパイル済みアセンブリを含む項目グループを取得しますが、RunTestsターゲットは別の場所から呼び出されるため、実際にはどちらにも依存することはできません。したがって、アイテム グループを共通の testrunner ターゲットに渡す必要があります。ただし、ターゲット内の項目グループへの変更は、そのターゲット内でのみ機能するようにスコープが設定されているように見えるため、これは不可能のようです。

私はこれらの 投稿を見てきましたが、それらは私の恐怖を確認DependsOnTargetし、回避策として提案しているように見えます.異なる実行で異なる場所からアイテムを取得する必要があるため、これはうまくいきません.

これは私がこれまでに持っているものです:

これを回避する方法はありますか、それともビルド スクリプトを完全に再構築する必要がありますか?