2

私は Visual Studio 2015 を使用しています。2 つの異なる Web アプリケーションを使用したソリューションがあります。1 つのソリューションとその下に 2 つのプロジェクトが存在します。nuget に関連するファイルは、次のように配布されます。

  1. Packages フォルダーはソリューション ディレクトリにあります
  2. 各プロジェクト ディレクトリの Package.config

nuget フォルダーはありません: 私のソリューションには nuget.config と nuget.exe です。

私のプロジェクトは Visual Studio で正常にビルドおよび実行されますが、ビルド ソリューション ステップ (1 つのプロジェクトにマップされるビルド定義を使用する) で VSTS 継続的インテグレーションを使用すると、次のような問題が発生します。

This project references NuGet package(s) that are missing on this computer. Use 
NuGet Package Restore to download them. For more information, see  The missing file is 
..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props.

これは MyProject.csproj ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>
    </ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{BBD26A49-D1F4-4391-9D60-2469433DEE0D}</ProjectGuid>
    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>AdminUI</RootNamespace>
    <AssemblyName>AdminUI</AssemblyName>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    <UseIISExpress>true</UseIISExpress>
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
    <UseGlobalApplicationHostFile />
    <SccProjectName>SAK</SccProjectName>
    <SccLocalPath>SAK</SccLocalPath>
    <SccAuxPath>SAK</SccAuxPath>
    <SccProvider>SAK</SccProvider>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

エラーを生成したパッケージのみをインポートしようとすることに気付きましたが、他のパッケージを明示的にインポートするのではなく、それらを参照として含めています。

<Reference Include="WebGrease">
      <Private>True</Private>
      <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
    </Reference>
    <Reference Include="Antlr3.Runtime">
      <Private>True</Private>
      <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
    </Reference>

これもmyProject.csprojファイルの終わりです。

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>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 {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
    <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
  </Target>

このパッケージが前のステップ "Nugget Install" で既にインストールされていることを考慮して、なぜこのエラーが発生するのか疑問に思っています。なぜそれが見つからないのですか?私はこの問題に多くの時間を費やしました!

4

3 に答える 3

1

ビルド タスクを追加する前に、nuget インストールまたは復元タスクを追加できます。これにより、ビルド エージェントに nuget パッケージが復元/インストールされます。

于 2016-04-25T19:47:37.550 に答える
0

実際、これは私のために働いた:

ソリューションのパッケージ フォルダーへのマッピング (リポジトリ構成) の追加

リポジトリ構成

ここに画像の説明を入力

Nuget インストール構成

ここに画像の説明を入力

その後、それは魅力のように機能しました。

于 2016-04-26T19:00:09.870 に答える