2012-01-09 12 views
1

私はこのようになりますnuspecファイルノードがあります。私はポストコンパイルステップで私のnuspecパッキングを実行しnuspecファイルノードはどのような種類の変数を取ることができますか?

<files> 
    <file src="bin\Release\MyProject.dll" target="lib\MyProject.dll" /> 
</files> 

を。そしてそれはVisual Studioから素晴らしい作品です。

しかし、TFSは "通常"ビルドされません。すべてのライブラリとソースを「バイナリ」フォルダに置きます。

<file>ノードに変数を入れて、TFSビルドを実行するときにバイナリフォルダをポイントし、Visual Studioビルドでビルドするときに通常のままにする方法はありますか?

2つのnuspecファイルを用意する必要はありません(1つはTFS用、もう1つはVisual Studio用)。

答えて

1

私はNugetパッケージを作りたいプロジェクトのパッケージフォルダを作って解決しました。

そこにすべてのフォルダと不変のファイルを作成します。

私は、パッケージフォルダに組み込まれており、Nuget.exe

を実行されたファイルは、だから、行くことのコピープロジェクトでポストビルドステップを追加しました:

がバックにプロジェクト コピー出力を構築パッケージプロジェクトの\ Lib パッケージフォルダ内のnuspecファイルを使用してNuget.exeを実行します。 結果を残りの出力の隣の出力フォルダにコピーします。

Nuget.exeは、システム上の固定フォルダとビルドサーバー(汚いソリューション)のどちらかになければなりません。ここで

+0

あなたのポストビルドスクリプトを共有することをいとわないでそれらを置く必要があるでしょうか? – Vaccano

+1

Xcopy.exe/Y "$(TargetPath)" "$(ProjectDir)\ Package \ Lib" cd "$(ProjectDir)パッケージ" "$(TargetDir) .. \ Buildscripts \ Nuget.exe "パックMyPackage.nuspec xcopy/Y * .nupkg" $(TargetDir) " これを使用するために注意しなければならないのは、nuget.exeをチェックする場所です。開発ツリーのトップレベルにbuildscriptsフォルダを作成しました。 – Schwarzie2478

+0

Nugetには "BasePath"オプションがあることが分かります。あなたがそれを渡すならば、異なるパスを取るためにnuspecを得ることができます。 (また、NuGetには.csprojファイルを取るオプションがあります) – Vaccano

0

はnuget仕様が存在しない場合は、それを作成し、5秒

cd "$(TargetDir)..\..\" 
if exist $(TargetDir)..\..\*.nuspec (goto dontcreatespec) ELSE (goto createspec) 
:createspec 
nuget spec -f 
ping -n 5 127.0.0.1 > nul 
:dontcreatespec 
を待って、あなたのビルド前のイベントコマンドライン では、コマンドラインで

をこれを行う簡単な方法ですあなたのビルド後のイベントコマンドラインで

は、5秒待って見つけるとおならを使用して独自のテンプレートを持つ文字列を置換して、別のディレクトリ

cd "$(TargetDir)..\..\" 
ping -n 5 127.0.0.1 > nul 
set find1="Summary of changes made in this release of the package." 
set replace1="summary test" 
set find2="http://ICON_URL_HERE_OR_DELETE_THIS_LINE" 
set replace2="http://test.com" 
set find3="Tag1 Tag2" 
set replace3="testtag" 
set find4="http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE" 
set replace4="http://test.com" 
set find5="http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE" 
set replace5="http://test.com" 
fart -i "$(TargetDir)..\..\*.nuspec" %find1% %replace1% 
fart -i "$(TargetDir)..\..\*.nuspec" %find2% %replace2% 
fart -i "$(TargetDir)..\..\*.nuspec" %find3% %replace3% 
fart -i "$(TargetDir)..\..\*.nuspec" %find4% %replace4% 
fart -i "$(TargetDir)..\..\*.nuspec" %find5% %replace5% 
nuget pack $(ProjectPath) 
xcopy *.nupkg "$(TargetDir)..\..\..\localpackages" /s /d /y 
にコピー

あなたはNuget.exeとfart.exe

https://nuget.codeplex.com/releases

http://fart-it.sourceforge.net/

はパス環境変数

関連する問題