Ich liebe das neue .csproj
Format wirklich. Es ist so viel besser als der gefürchtete (eingeschränkte) project.json
.
Es gibt jedoch eine Sache, die ich zu trainieren versuche. Ich habe meine (mehreren) Testprojekte zu einem einzigen Projekt mit mehreren Zielen zusammengeführt.
<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>
Es scheint jedoch kein Tool im Test Explorer in Visual Studio zu geben, mit dem das Zielframework ausgewählt werden kann - es wird immer nur das erste ausgeführt. Ich habe eine Problemumgehung gefunden - um ein <TargetFramework>
-Element mit einem bestimmten Framework hinzuzufügen ...
<TargetFramework>net35</TargetFramework>
Gibt es eine Möglichkeit, das Zielframework auszuwählen, ohne die MSBuild-Datei (.csproj
) manuell zu bearbeiten? Ich suche nach einer Option in der GUI, um dies zu tun - insbesondere, damit ich nicht daran denken muss, die .csproj
-Datei zu bearbeiten, um die Frameworks vor dem Debuggen eines Tests zu wechseln, oder um daran zu denken, diese Zeile vor der Veröffentlichung zu entfernen.
Ich weiß, dass es sich um eine VS-Frage handelt, aber ich finde es nützlich, dass bei der Ausrichtung auf mehrere Frameworks der Befehl dotnet tests
Tests für alle Frameworks ausführt im Knoten <TargetFrameworks>
:
> dotnet test
...
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1)
...
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1)
...
NCrunch kann auch mehrere Ziele erkennen und Tests für jedes Ziel automatisch ausführen:
Verwenden Sie TargetFrameWorkVersion in einer Laufeinstellungsdatei mit dem Operator 'oder'.
Die beste Option ist derzeit, die Reihenfolge Ihrer Ziel-Frameworks im csproj zu ändern.
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
Wenn Sie Komponententests für das net45-Framework debuggen möchten, müssen Sie Folgendes festlegen:
<PropertyGroup>
<TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>
Die Benutzeroberfläche dafür in Visual Studio wäre relativ einfach zu implementieren, dies wurde jedoch zum Zeitpunkt der Beantwortung dieser Frage nicht getan.