相対パスによるmsbuildコミュニティタスクの参照

私は過去2日間、MSBuildコミュニティタスクパックでSvnInfoタスクをどのように使用するかを理解しようとしました。インストーラを使用したので、私のマシンで動作します。確かに、私はそれが相対的なパスで動作するようにする必要があります。私がCIサーバにパックをインストールしないと、私はsvnにパックを保存することができますし、ciサーバがビルドするためのコードをすべて取得すると、私が書いたビルドスクリプトはタスクを参照しようとしているようです通常はインストールされるが存在しないc:ドライブからdllなどを削除する。なぜ私は分からない。相対的なタスクを参照するためにプロパティを使用しても、タスク全体を通してそのプロパティを参照しても、それでもエラーが発生するようです。

私はSubversion(私たちのsvn)からsvnリビジョン番号を取得し、アセンブリリビジョン番号を更新したいと思います。実装されたものを、そのリリースのために取り込まれたチェンジセットに結びつけることができるように。私がmsbuildコミュニティパックのために見つけることができる少しのドキュメントは、私がクライアントだけを使うべきだと言ったが、私が使うことができる唯一のものはslik svnだった。それは地元で動作するようだが、何とかそれも間違っていると感じる...私はsvnの同じ風味に固執する必要があります。

誰かが私ができなかったことを見つけることができた提案や改善やリンクがあれば、それは大いに感謝します。

<?xml version="1.0" encoding="utf-8"?>


  
    x
    Debug
  


  <!-- 1 -->
  
  
  


  
    <!-- Required here in order to use the outDir syntax in the compile target - useage "@(BuildArtifacts)" -->
    
    
  

  
    
    
    
  


  
    
    
  

  
    
    
  

  
    

      <!-- 2 -->
      
    
    
    
    


    <!-- 3 -->
    
    

    
    
   


   <!-- 4 -->
   
    
      
    
    
   



  
    
    
  


2
AssemblyInfoReaderのパスと同じように実行する必要がある場合、インストールされたタスクアセンブリ( $(MSBuildCommunityTasksPath)MSBuild.Community.Tasks.dll )を指すSvnInfoの UsingTask
追加された 著者 Jim Schubert,

2 答え

アセンブリーに MSBuildコミュニティタスク相対パスで参照するには、上部にこれを追加してみてください:


  .


Import は、 $(MSBuildCommunityTasksPath)\ MSBuild.Community.Tasks.dll のアセンブリを指すすべての UsingTask code> MSBuildCommunityTasksPath は `.Targets 'プロジェクトファイルからの相対パスです。

4
追加された
これは正解です。プロパティを設定することは重要です。設定されていない場合は、ファイルMSBuild.Community.Tasks.Targetsのロジックに従って、C:\ Program Filesで検索するようにデフォルト設定されています。
追加された 著者 Victor Ionescu,

私は、ソースコントロール上に次のディレクトリ構造を持っています:

\BuildScripts\Bin\
\BuildScripts\Scripts\

ローカルPCにMsBuild Community Tasksをインストールし、すべての関連ファイルを\ BuildScripts \ Bin \フォルダに移動しました。スクリプトでは、MSBuild.Community.Tasks.Targetsファイルへの相対パスを使用しています。


  <!-- Import Community Tasks -->
  

  
    

      
    
    
    
    
 

ビルドサーバーでは、ビルド前にソースコントロールからBuildScriptsフォルダを取得します。それから、私はBuildScripts \ Scriptsフォルダにあるスクリプトを実行しています。これは、MsBuildコミュニティのタスクをインストールせずに、チーム内の他の開発者にもローカルで働いています。

2
追加された
私は働いているサンプルを見せて、それがどのように私のために働いているのかを示してみましたそれもあなたのためにこの方法で動作するはずです。
追加された 著者 Ludwo,
それは私がやっていることではありません...私はあなたが上で述べたことが私がやっていることとどのように違うのか分かりません。違いは?それとも、私がやっていることがうまくいくか確認していたのですか?
追加された 著者 Kevin Donde,