2017-07-12 13 views
2

VSTSでプロジェクトをビルドするときは、最初にNUgetリストアステップでナゲットパッケージをダウンロードします。VSTSビルドパッケージの場所の設定

nuget.configへのパスは、ソリューションフォルダ.nuget内のファイルを指します。このファイルの には、リポジトリへのパスがあります。

ビルドを実行するときに復元するステップが正常に動作し、すべてのパッケージはこのディレクトリに復元されます。

2017-07-12T14:11:15.7270814Z Adding package '***' to folder 'd:\a\3\s\microservices\MyPackages12' 

ビルド中に間違った場所があるため、パッケージが見つかりませんでした。

2017-07-12T14:11:27.7978408Z   Considered "..\..\MyPackages\ 

これは、vstsのパッケージフィードのパッケージでは失敗するようです。

ビルドステップでのパッケージの場所はどこで変更できますか?

感謝..

編集

Nuget.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
    <add key="repositoryPath" value="..\MyPackages" /> 
    </config> 
    <packageSources> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="MyWebAPI" value="https://MyWebAPI.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" protocolVersion="3" /> 
    </packageSources> 
</configuration> 

編集2 私はそれを好きなようにそれが動作しなくなってきました。

第1の現在の解決策。 nugetインストーラのバージョン2

buildscreen

現在nuget.config。私は好きではない何

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" /> 
    </config> 
    <packageSources> 
    <!-- remove any machine-wide sources with <clear/> --> 
    <clear /> 
    <!-- add a Team Services feed --> 
    <add key="MyGreatFeed" value="https://CICD.pkgs.visualstudio.com/_packaging/CICDWebAPI/nuget/v3/index.json" /> 
    <!-- also get packages from the NuGet Gallery --> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packageSources> 
    <activePackageSource> 
    <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 

は、私は特定のプロジェクト名をせずに、集中nuget.configがしたい

<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" /> 

です。この場合に失敗ビルドである

私が考える問題は、nuget.config設定でビルドタスクdooesn'tの外観であるが、デprojのファイルの設定をとる。..

..私は、

<add key="repositoryPath" value="..\MyPackages" /> 

を用い、この復元ステップ

2017-07-14T06:35:40.5913207Z Restoring NuGet package Microsoft.AspNet.WebPages.3.2.3. 
2017-07-14T06:35:40.5923209Z GET https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebPages',Version='3.2.3') 
2017-07-14T06:35:40.6643208Z OK https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebApi.WebHost',Version='5.2.3') 113ms 
2017-07-14T06:35:40.6683214Z GET https://www.nuget.org/api/v2/package/Microsoft.AspNet.WebApi.WebHost/5.2.3 
2017-07-14T06:35:40.6798131Z Completed installation of Microsoft.AspNet.Razor 3.2.3 
2017-07-14T06:35:40.6818132Z Adding package 'Microsoft.AspNet.Razor.3.2.3' to folder 'd:\a\1\MyPackages' 
2017-07-14T06:35:40.6828123Z Completed installation of Microsoft.AspNet.Mvc 5.2.3 

が、ビルドステップでは、異なる場所

を使用することになります3210
2017-07-14T06:35:49.5938928Z d:\a\1\s\WebSiteCiCd\WebSiteCiCd\WebSiteCiCd.csproj(297,5): error : This project references NuGet package(s) that are missing on this computer. 
Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. 
The missing file is ..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props. 

それは.. \パッケージ\参照パスこのことができます

希望..

+0

nuget.configの詳細コードは何ですか?これらの参照のパスは何ですか? –

+0

詳細ビルドログは、ここまたはOneDriveで共有できますか?この記事を参照してください[自動復元に移行](https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore#msbuild-integrated-restore) –

+0

私は質問を編集2 @ starain-MSFT – Frans

答えて

0

このタスクでは、Temp Nuget構成ファイル(-ConfigFile xxx_work \ 17 \ Nuget \ tempNuGet_1951.configなど)を使用すると、repositoryPathはこの一時ファイルに基づいています。

.. \ s \ WebSiteCiCd \ Packagesパスの場合、パッケージはxxx_work \ 17 \ s \ WebSiteCiCd \ Packagesフォルダに復元されます。 (.. \ MyPackages => xxx_work \ 17 \ MyPackages)。

良い方法は、あなたが、その後の構造が同じである、ちょうどローカルビルドサーバー両方のデフォルト設定を使用し、(configセクションを削除)リポジトの設定を削除することができるということです。

+0

これは私の初期appraochでした...それは動作しませんでした。私はパッケージフィードを持っているので、nuget.configファイルが必要でした。それ以来、私はパッケージの復元に問題があります。 参照パスとパッケージフォルダの深さに関する問題を理解しています。しかし、私に最も打撃を与えるのは、ビルドでnuget.configを使用しないことです。 .. \ Mypackages \の代わりに.. \ packages \フォルダを参照しているからです。 ビルドにこのファイルを使用させるためには、上位レベルのnuget.configをルートに近づける必要がありますか? – Frans

+0

@Fransつまり、Nuget.configファイルのconfigセクションを削除して、ビルドタスクで更新されたNuget.configファイルを使用する必要があるということです。一方、ビルドに使用された参照のパスは、Nuget.configのrepositoryPath設定に関係なく固定されています。 –

+0

@Fransあなたは問題を解決しますか? –

0

は、プロジェクトファイルで、あなたの参照を更新して使用しています。誰かが自分のマシン上に存在する非標準の場所からパッケージを参照したようです。

ローカルパッケージのすべてを削除する(またはソース管理から新しく再同期する)だけで、リストアをローカルで実行できるように、このような問題をトラブルシューティングする最も簡単な方法です。それはかなり早く参考文献の問題を見つけ出すだろう。

+0

パッケージを削除して復元しましたが、これは役に立ちませんでした.. – Frans

0

ソリューション@ starain-MSFTのおかげ:csprojファイル内

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="My packages" value="https://mypackages.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" /> 
    </packageSources> 
</configuration> 

パッケージを、hintpathを設定します。例えば

<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL"> 
     <HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath> 

はまだビルドtaksが使うことができれば、それは便利だと思いますパッケージのオプションを設定するnuget.configファイル

関連する問題