2017-08-12 18 views
0

私が2倍のプロジェクトを持っている.NETソリューションを持っている:残念ながら、私はxUnitのプロジェクトでパッケージを使用していVSTSを使用して.NET標準プロジェクトと.NET 4.7プロジェクトを含む.NETソリューションを構築する方法

  • .NET標準1.6
  • .NET 4.7のxUnitプロジェクト

.NET Core xUnitプロジェクトでは動作しません。そのため、私はユニットテストに.NET 4.7プロジェクトを使用しています。

Visual Studio Team Servicesでこれを行う方法がわかりません。

以前、私は、.NETの標準プロジェクトと.NETのコアのxUnitプロジェクトを持っていたし、次います

  • は、ソース(GIT)
  • 復元(.NETコア)
  • を取得します
  • ビルド(.NETコア)
  • パック(.NETコア)
  • はプッシュNuGet

だから - どのように私の操作を行います。

  • して、.NET 4.7のプロジェクトを.NETのコアプロジェクトをビルド復元+
  • して、.NET 4.7のプロジェクトのためのxUnitテストを実行
  • と最終的にpack/nuget .NET Standard 1.6プロジェクトをプッシュします。

してください。


EDIT:

は、ここで私がしようとすると、通常のdotnet restore

お知らせ行うときに、それは私のローカルホストマシン上で次のようになります。 - Hornet.Services.csprojが復元されています。 - Hornet.Services.Tests.csprojが見つかりません。 - 上記のスクリーンショットで示したように、両方のプロジェクトが私のslnにあります。

c:\Projects\Personal\Hornet\Hornet.Services>dotnet restore 
    Restoring packages for c:\Projects\Personal\Hornet\Hornet.Services\src\Hornet.Services\Hornet.Services.csproj... 
    Generating MSBuild file c:\Projects\Personal\Hornet\Hornet.Services\src\Hornet.Services\obj\Hornet.Services.csproj.nuget.g.props. 
    Writing lock file to disk. Path: c:\Projects\Personal\Hornet\Hornet.Services\src\Hornet.Services\obj\project.assets.json 
    Restore completed in 1.42 sec for c:\Projects\Personal\Hornet\Hornet.Services\src\Hornet.Services\Hornet.Services.csproj. 

    NuGet Config files used: 
     c:\Projects\Personal\Hornet\Hornet.Services\NuGet.Config 
     C:\Users\Pure Krome\AppData\Roaming\NuGet\NuGet.Config 
     C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config 

    Feeds used: 
     https://api.nuget.org/v3/index.json 
     https://purekrome.pkgs.visualstudio.com/_packaging/Hornet-Dev/nuget/v3/index.json 

c:\Projects\Personal\Hornet\Hornet.Services> 
+0

それ以外の機能はありますか?ビルドエージェントに4.7 SDKがインストールされている限り、 'dotnet' CLIツールはプロジェクトをビルド/テスト/パックすることができるはずです。 –

+0

ビルドされていないため、サービスプロジェクトを見つけることができませんでした。 –

答えて

1

ここで起こって多くのものがあります:

  1. は、.NET FrameworkのxUnitテストプロジェクトを作成するには多くの方法今がある - 古典的な.NETプロジェクトまたは「SDKベース」のプロジェクトが。現在、.NET Coreおよび.NET Standardプロジェクトテンプレート(「ASP.NET Core(.NET Framework)」のみ)はSDKベースのプロジェクトを作成しますが、csprojファイルのTargetFrameworkプロパティはnet47から簡単に変更できます例えばnetcoreapp1.1。デフォルトで

  2. は、古典的なプロジェクトは、NuGet参照のpackages.configファイルを使用します。のみnuget.exeコマンドラインは、これらのタイプのプロジェクトを復元することができます。PackageReferenceアイテムを使用してNuGetパッケージを参照するmsbuildに統合された方法は、msbuild /t:Restoreを使用するMSBuild経由で直接使用することができます。これはdotnet restoreです。つまり、dotnet restorepackages.configベースのプロジェクトを復元できません。従来の.NET Frameworkプロジェクト(非SDKベース)でも、VS 2017バージョン> = 15.2でPackageReferenceスタイルを使用できることに注意してください。

  3. dotnet testのサポートは、Microsoft.NET.Test.Sdk NuGetパッケージによって提供され、SDKベースのプロジェクトに使用されます。このパッケージには、msbuild /t:VSTest(これはdotnet testが呼び出します)を介してテストを実行するために必要な構成とmsbuildターゲットが含まれています。従来の単体テストプロジェクトでは、このロジックが含まれていないか、または参照されておらず、テストランナーがテストを検出して実行しています(ビジュアルスタジオインストールを使用する従来のユニットテストVSTSタスクなど)。

  4. は多くの古典的な.NET Frameworkプロジェクトを構築できるはずですが、基礎となるビルドタスクは.NET Framework上で実行されるため、動作しない可能性があります。 NETコアバージョンのMSBuild - eg resxファイルはファイル参照を使用できません。アセンブリ署名には制限があります 、COM参照は機能しません。これらの状況の予防措置として、dotnetツールの代わりにmsbuildを使用してください。 (msbuild /t:Restoremsbuild /t:Publish /p:Configuration=Releasemsbuild /t:VSTestなど)

私の提案:.NETのコアのxUnitプロジェクトとしてテストプロジェクトを作成し、dotnetツールのすべての機能を使用できるようにnet47にcsprojでTargetFrameworkを変更。

+0

パーフェクト!それがトリックでした! –

関連する問題