MSBuild設定ファイルでディレクトリ名を取得する方法 -- msbuild フィールド 関連 問題

How to get Directory name in msbuild configuration file?












0
vote

問題

日本語

これは私が使用している単純なコードです。これはディレクトリ内のすべてのフォルダを取得してからフォルダ名を入力します。

<事前> <コード> <TestProjectFolderPath Include="$([System.IO.Directory]::GetDirectories(`$(SolutionDir)`,`*.Tests`))" /> <TestProjectFolderNames Include="@(TestProjectFolderPath->'$([System.IO.Path]::GetDirectoryName(`$([System.IO.Path]::GetFileName(`%(Identity)`))`)',' ')" />

しかしTestProjectFolderNames [System.IO.Path]関数は、単なる文字列として評価されずに返されていません:

<事前> <コード> $([System.IO.Path]::GetDirectoryName($([System.IO.Path]::GetFileName(C:Some.Unit.Tests)))

この作業を得るために正しい構文を理解するのに役立つ必要があります。

英語

Here is the simple code which I am using. Which gets all the folders in the directory and then give me the Folder name.

<TestProjectFolderPath Include="$([System.IO.Directory]::GetDirectories(`$(SolutionDir)`,`*.Tests`))" /> <TestProjectFolderNames Include="@(TestProjectFolderPath->'$([System.IO.Path]::GetDirectoryName(`$([System.IO.Path]::GetFileName(`%(Identity)`))`)',' ')" /> 

But in TestProjectFolderNames [System.IO.Path] functions are not getting evaluated and returned as just string eg:

 $([System.IO.Path]::GetDirectoryName($([System.IO.Path]::GetFileName(C:Some.Unit.Tests))) 

I need help to understand the correct syntax to get this working.

</div
  

回答リスト

1
 
vote
vote
ベストアンサー
 

アイテムメタデータ上のプロパティ関数の使用項目の変換はサポートされていません(最新のMSBuildバージョンにありますが、今すぐテストできません)と思います。回避策として、新しいメタデータを自分で追加すると、プロパティのように機能しているため、最近のMSBuildバージョンではOKを見つけてください。

<事前> <コード> <ItemGroup> <TestProjectFolderPath Include="$([System.IO.Directory]::GetDirectories(`$(SolutionDir)`,`*.Tests`))" /> <TestProjectFolderPath> <FolderName>$([System.IO.Path]::GetFileName(`%(Identity)`))</FolderName> </TestProjectFolderPath> </ItemGroup> <Message Text="@(TestProjectFolderPath->'%(FolderName)', ' ')" />

編集古いMSBuildバージョンのシェリーによると、同等のアイテムコードは次のとおりです。

<事前> <コード> use GoogleCloudBigQueryBigQueryClient; $source = 'miData.csv'; $datasetId = 'miDataset'; $table_id='miTable'; $bigQuery = new BigQueryClient(); $dataset = $bigQuery->dataset($datasetId); $table = $dataset->table($table_id); $loadConfig = $table->load(fopen($source, 'r')); $loadConfig->sourceFormat('CSV'); // create the import job $schema = [ 'fields' => [ ['name' => 'miDate', 'type' => 'DATE','mode'=>'required'], ['name' => 'name', 'type' => 'STRING'], ['name' => 'post_abbr', 'type' => 'STRING'] ] ]; $loadConfig->schema($schema); $timePartitioning = ['type'=>'DAY','filed'=>'miDate']; $loadConfig->timePartitioning($timePartitioning); $loadConfig->createDisposition('CREATE_IF_NEEDED'); $loadConfig->writeDisposition('WRITE_TRUNCATE'); $job = $table->runJob($loadConfig); 0

getFileNameの結果にgetDirectorynameを除外しました。

 

Using property functions on Item Metadata while transforming an Item is not supported I think (maybe it is in the latest MSBuild version but I cannot test that right now). As a workaround add new Metadata yourself and because it acts like a Property things work out ok for recent MSBuild versions:

<ItemGroup>   <TestProjectFolderPath Include="$([System.IO.Directory]::GetDirectories(`$(SolutionDir)`,`*.Tests`))" />   <TestProjectFolderPath>     <FolderName>$([System.IO.Path]::GetFileName(`%(Identity)`))</FolderName>   </TestProjectFolderPath> </ItemGroup> <Message Text="@(TestProjectFolderPath->'%(FolderName)', ' ')" /> 

edit see comments, according to Sherry for older MSBuild versions the equivalent Item code is:

<TestProjectFolderPath Include="$([System.IO.Directory]::GetDirectories($(SolutionDir),*.Tests))">   <FolderName>$([System.IO.Path]::GetFileName(%(Identity)))</FolderName> </TestProjectFolderPath> 

I left out GetDirectoryName because it makes little sense calling that on the result of GetFileName.

</div
 
 
         
         

関連する質問

18  CRUISecontrol.net、MSBuild、/ P:outputPathとccnetartifactDirectory  ( Cruisecontrol net msbuild poutputpath and ccnetartifactdirectory ) 
現時点でcruisecontrol.netを設定しようとしています。これまでのところうまくいきますが、MSBuildタスクに問題があります。 ドキュメントに従って、CCNetartifactDirectoryをMSBuildに渡します。しかし、どのようにそれを...

7  MSBuildを介してコンパイラにパラメータを渡すにはどうすればよいですか。  ( How can i pass a parameter through msbuild to the compiler ) 
以下の行を使用してMSBuildをビルドするためにDelphi 2010 GroupProj: <事前> <コード> MSBuild C:srcmyprojgroup.groupproj /target:Build /p:config=Release ...

6  TFS 2010上のビルドと依存関係の解決に関する問題  ( Problems with builds on tfs 2010 and resolving dependencies ) 
私のマシン(およびプロダクションサーバー)に大きく機能するプロジェクトがあります。 それはC#3.5を実行しているVS2010プロジェクトです。 私のビルドサーバーにソリューションを構築するとき、それは私のサードパーティのDLLのカップルを解決することはできま...

0  Silverlight SolutionはVS2008で構築しますが、MSBuildで失敗します  ( Silverlight solution builds in vs2008 but fails with msbuild ) 
私はビルドスクリプトを作成したいSilverlightソリューションを持っています。こののように見える簡単なスクリプトがあります <事前> <コード> call "c:Program FilesMicrosoft Visual Studio 9.0VCinv...

1  MSBuildで希望の宛先にZipフォルダを作成するように与えるコマンド  ( Command which gives to create a zip folder to desired destination in msbuild ) 
msbuildで目的の宛先にzipフォルダを作成するように与えるコマンドを望みます。 緊急に手伝ってください。 私の質問を明確にするため: このZIPタスクを含める必要があります。私のビルドには、開発者がコードを引っ張って構築することができます、私は彼の...

43  SVNリビジョンを使用してCCNETのビルドをラベルします  ( Use svn revision to label build in ccnet ) 
SVNをソース制御としてSVNでサンプルプロジェクトでCCNETを使用しています。 CCNETは、チェックインごとにビルドを作成するように設定されています。CCNETはMSBuildを使用してソースコードを構築します。 コンパイル中に最新のリビジョン番号を使...

32  NANTはまだサポートされており、.NET 3.5 / VS2008に適していますか?  ( Is nant still supported and suitable for net 3 5 vs2008 ) 
MSBUILDを使用して私のものを構築しています。 Build ServerによってCRUISecontrol.netを使用したいです。 CCNETはNANTを大きく指していますが、CCNETがProject ConfigurationとMSBuildを通...

0  Web.configの<DataConfiguration>セクションの変更に問題がある  ( Having problems changing the dataconfiguration section of web config in wdp ) 
私はこのようなセクションを含むweb.configファイルを持っています: <事前> <コード> <configuration> <configSections> <section name="dataConfiguration" type="Mi...

19  cruiseControl.netを使用してMSTestを使用して  ( Using mstest with cruisecontrol net ) 
NUnit and Nantでは、クルイセクロールをかなりの間に使用しています。最近のプロジェクトのために、我々はこれまでのところ適切であるVisual Studioに付属のテストフレームワークを使用することにしました。 CruiseControlで実行中...

1  MSBUILDとTFSとの継続的な統合について学ぶための良いリソース  ( Good resources to learn about msbuild and continuous integration with tfs ) 
MSBUILDには比較的新しいもので、MSBUILDとTFSのあるCIの詳細については、良いリソースをお探しのものです。具体的には、以下の特定のタスクを見ています チェックインが起こるときはいつでも最新のTFSから撮影 ソリューションを構築する コード分析...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有