1

単一のVisualStudioソリューションに、Webサイト、Windowsサービス、およびいくつかの共有クラスライブラリがあります。私はWebサイトとWindowsサービスの両方でOctopackを使用していますが、私のマシンではこれらのビルドは期待どおりに機能します。

TFSビルドサーバーを使用すると、Webサイトのnugetパッケージが期待どおりに生成されますが、Windowsサービスのnugetパッケージには、Webサイトのすべてのファイルとサービスが含まれています。たとえば、_PublishedWebsitesフォルダーも含まれます。

これは、TFSが単一の場所を使用してプロジェクトを構築するためです。

これを回避する最善の方法は何ですか?

4

2 に答える 2

3

この質問はその後クローズされたことは知っていますが、この問題に遭遇し、別の方法で解決しました。

私のソリューションは、多くの Web サイトと Windows サービスで侵害されており、チーム ビルドでビルドするときに、「プールされた」出力フォルダーからのすべてのソリューション アセンブリを含む、OctoPack で作成された nuget パッケージと同じ問題がありました。ナゲット パッケージがすべてのアセンブリを取得する理由は、OctoPack がアセンブリを含める場所として outdir msbuild 引数を使用するためです。

私がそれを回避した方法は、 msbuild 引数を使用することでしたGenerateProjectSpecificOutputFolder=true。これにより、ローカルでビルドするときに Visual Studio が各プロジェクトの下の bin フォルダーを使用するのと同じ方法で、チーム ビルドが出力フォルダーに各プロジェクトのフォルダーを作成するように指示されます。

私のビルド定義の msbuild 引数は次のようになります。 /p:GenerateProjectSpecificOutputFolder=true;RunOctoPack=true;OctoPackPublishPackageToFileShare=\\<NugetServer>

現在、パッケージを共有フォルダーにプッシュするだけですが、OctoPackPublishPackageToHttpおよびOctoPackPublishApiKeyパラメーターも使用できます。

上記のソリューションに対するこのソリューションの利点は、nuget パッケージを含めるためにファイルを指定する必要がないことです。

これが誰かに役立つことを願っています。

于 2013-04-26T19:25:45.243 に答える
2

この nuget パッケージを使用して、コンソール アプリが TFS サーバー上の別のディレクトリにビルドされるようにしました。

https://nuget.org/packages/PublishedApplications/2.1.0.0

次に、コンソール アプリに含めるファイルを nuspec ファイルで指定する必要がありました。例えば

これは機能し、Octopus deploy を使用してデプロイできるようになりました。

このアプローチの欠点は、PublishedApplications ビルドが TFS ビルド サーバーでしか機能しないため、プロジェクトをリリース モードでローカルにビルドできないことです。これを克服する方法はまだ模索中です。

于 2013-01-10T22:20:10.867 に答える