あらゆる種類のプロジェクトで頻繁に使用する共通ライブラリの場合、nuget サーバーをセットアップします。しばらくの間、次のように nuget パッケージを手動で公開しました。
nuget pack .\ProjectFolder\CommonProjectName.csproj -Symbols -Build -Properties Configuration=Release
このパッケージを手動で nuget サーバーにプッシュしました。
ここで、このブログ記事で説明されているように、VSTS Build vNext を使用してこの公開を自動化したい: http://www.codewrecks.com/blog/index.php/2015/09/26/publishing-a-nuget-package-to-nugetmyget -with-vso-build-vnext/
以前と同じ nuspec ファイルを使用します。
<?xml version="1.0"?>
<package >
<metadata>
<id>Common Library</id>
<version>1.0.0.0</version>
<title>Library Title</title>
<authors>...</authors>
<owners>...</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>...</description>
<releaseNotes>...</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>...</tags>
<dependencies>
<dependency id="EntityFramework" version="6.1.3" />
<dependency id="log4net" version="2.0.4" />
<dependency id="Microsoft.AspNet.Mvc" version="5.2.3" />
<dependency id="Microsoft.AspNet.Razor" version="3.2.3" />
<dependency id="Microsoft.AspNet.WebPages" version="3.2.3" />
<dependency id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
</dependencies>
</metadata>
</package>
自動化の後、次のエラーメッセージが表示されます。
説明: アセンブリ 'bin\Release\CommonLibrary.dll' は 'lib' フォルダー内にないため、パッケージがプロジェクトにインストールされるときに参照として追加されません。解決策: 参照する必要がある場合は、「lib」フォルダーに移動します。問題: lib フォルダー外のアセンブリ。
nuget サイトのパッケージ規則セクションを読みましたが、これらの規則に自動的に準拠するにはどうすればよいですか。言い換えれば、構築および参照された dll を、buidcontroller の適切な場所に配置するにはどうすればよいでしょうか。
助けてくれてありがとう、
敬具、ルーク・クリネン
Extra : FTP を使用して nuget パッケージをダウンロードした後、元のソース コードと同じように、コンパイル済みのソースがツリー内のパッケージに追加されます。したがって、コンパイルした dll はフォルダ .\Bin\Release\ 内にあります。