Check for TargetFramework in addition to version (dotnet/aspnetcore-tooling#428)

* Check for TargetFramework in addition to version

\n\nCommit migrated from a4ed82f823
This commit is contained in:
Pranav K 2019-04-16 11:13:26 -07:00 committed by GitHub
parent ae4af3d154
commit 92e86f9d02
10 changed files with 279 additions and 17 deletions

View File

@ -33,14 +33,12 @@ Copyright (c) .NET Foundation. All rights reserved.
<!-- Resolve the RazorLangVersion based on values imported or TFM. --> <!-- Resolve the RazorLangVersion based on values imported or TFM. -->
<PropertyGroup> <PropertyGroup>
<_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV> <_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
<_TargetingNETCoreApp30OrLater Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' >= '3.0'">true</_TargetingNETCoreApp30OrLater>
<!-- Workaround for an older build of DesignTime.targets that requires this property to be available. This can be removed after 16.1 preview 2 insertion -->
<_TargetingNETCoreApp30OrLater Condition="'$(_TargetFrameworkVersionWithoutV)' &gt; '2.9'">true</_TargetingNETCoreApp30OrLater>
<!-- <!--
Infer the RazorLangVersion if no value was specified. When adding support for newer target frameworks, list newer language versions first. Infer the RazorLangVersion if no value was specified. When adding support for newer target frameworks, list newer language versions first.
--> -->
<RazorLangVersion Condition="'$(RazorLangVersion)' == '' AND '$(_TargetFrameworkVersionWithoutV)' &gt; '2.9'">3.0</RazorLangVersion> <RazorLangVersion Condition="'$(RazorLangVersion)' == '' AND '$(_TargetingNETCoreApp30OrLater)' == 'true'">3.0</RazorLangVersion>
<!-- <!--
In 3.0, we expect RazorLangVersion to either be specified in the template or inferred via TFM. In 2.x, RazorLangVersion is In 3.0, we expect RazorLangVersion to either be specified in the template or inferred via TFM. In 2.x, RazorLangVersion is
@ -53,7 +51,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<_Targeting30OrNewerRazorLangVersion Condition=" <_Targeting30OrNewerRazorLangVersion Condition="
'$(RazorLangVersion)' == 'Latest' OR '$(RazorLangVersion)' == 'Latest' OR
'$(RazorLangVersion)' == 'Experimental' OR '$(RazorLangVersion)' == 'Experimental' OR
('$(RazorLangVersion)' != '' AND '$(RazorLangVersion)' &gt; '2.9')">true</_Targeting30OrNewerRazorLangVersion> ('$(RazorLangVersion)' != '' AND '$(RazorLangVersion)' >= '3.0')">true</_Targeting30OrNewerRazorLangVersion>
</PropertyGroup> </PropertyGroup>
@ -386,7 +384,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<!-- For a 3.0 project, targeting a RazorLangVersion is nearly always an error condition --> <!-- For a 3.0 project, targeting a RazorLangVersion is nearly always an error condition -->
<Warning Text="Detected Razor language version downgrade. This is typically caused by a reference to the Microsoft.AspNetCore.Razor.Design package. Consider removing this package reference." <Warning Text="Detected Razor language version downgrade. This is typically caused by a reference to the Microsoft.AspNetCore.Razor.Design package. Consider removing this package reference."
Code="RAZORSDK1006" Code="RAZORSDK1006"
Condition="'$(_Targeting30OrNewerRazorLangVersion)' != 'true' AND '$(_TargetFrameworkVersionWithoutV)' &gt; '2.9'" /> Condition="'$(_Targeting30OrNewerRazorLangVersion)' != 'true' AND '$(_TargetingNETCoreApp30OrLater)' == 'true'" />
<FindInList <FindInList
List="@(RazorExtension)" List="@(RazorExtension)"

View File

@ -0,0 +1,58 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.AspNetCore.Testing.xunit;
using Xunit;
namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
{
public class BuildIntegrationTest11 : BuildIntegrationTest, IClassFixture<BuildServerTestFixture>
{
public BuildIntegrationTest11(BuildServerTestFixture buildServer)
: base(buildServer)
{
}
[Fact]
[InitializeTestProject("SimpleMvc11")]
public async Task RazorSdk_DoesNotAddCoreRazorConfigurationTo11Projects()
{
var result = await DotnetMSBuild("_IntrospectProjectCapabilityItems");
Assert.BuildPassed(result);
Assert.BuildOutputContainsLine(result, "ProjectCapability: DotNetCoreRazor");
Assert.BuildOutputDoesNotContainLine(result, "ProjectCapability: DotNetCoreRazorConfiguration");
}
[Fact]
[InitializeTestProject("SimpleMvc11")]
public async Task RazorSdk_DoesNotBuildViewsForNetCoreApp11Projects()
{
MSBuildIntegrationTestBase.TargetFramework = "netcoreapp1.1";
var result = await DotnetMSBuild("Build");
Assert.BuildPassed(result);
Assert.FileExists(result, OutputPath, "SimpleMvc11.dll");
Assert.FileExists(result, OutputPath, "SimpleMvc11.pdb");
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc11.Views.dll");
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc11.Views.pdb");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)]
[InitializeTestProject("SimpleMvc11NetFx")]
public async Task RazorSdk_DoesNotBuildViewsForNetFx11Projects()
{
MSBuildIntegrationTestBase.TargetFramework = "net461";
var result = await DotnetMSBuild("Build");
Assert.BuildPassed(result);
Assert.FileExists(result, OutputPath, "SimpleMvc11NetFx.exe");
Assert.FileExists(result, OutputPath, "SimpleMvc11NetFx.pdb");
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc11NetFx.Views.dll");
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc11NetFx.Views.pdb");
}
}
}

View File

@ -14,17 +14,6 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
{ {
} }
[Fact]
[InitializeTestProject("SimpleMvc11")]
public async Task RazorSdk_DoesNotAddCoreRazorConfigurationTo11Projects()
{
var result = await DotnetMSBuild("_IntrospectProjectCapabilityItems");
Assert.BuildPassed(result);
Assert.BuildOutputContainsLine(result, "ProjectCapability: DotNetCoreRazor");
Assert.BuildOutputDoesNotContainLine(result, "ProjectCapability: DotNetCoreRazorConfiguration");
}
[Fact] [Fact]
[InitializeTestProject("SimpleMvc")] [InitializeTestProject("SimpleMvc")]
public async Task RazorSdk_AddsProjectCapabilities() public async Task RazorSdk_AddsProjectCapabilities()

View File

@ -14,6 +14,7 @@
<ProjectReference Include="..\MvcWithComponents\MvcWithComponents.csproj" /> <ProjectReference Include="..\MvcWithComponents\MvcWithComponents.csproj" />
<ProjectReference Include="..\SimpleMvcFSharp\SimpleMvcFSharp.fsproj" /> <ProjectReference Include="..\SimpleMvcFSharp\SimpleMvcFSharp.fsproj" />
<ProjectReference Include="..\SimpleMvc\SimpleMvc.csproj" /> <ProjectReference Include="..\SimpleMvc\SimpleMvc.csproj" />
<ProjectReference Include="..\SimpleMvc11NetFx\SimpleMvc11NetFx.csproj" />
<ProjectReference Include="..\SimpleMvc11\SimpleMvc11.csproj" /> <ProjectReference Include="..\SimpleMvc11\SimpleMvc11.csproj" />
<ProjectReference Include="..\SimpleMvc21\SimpleMvc21.csproj" /> <ProjectReference Include="..\SimpleMvc21\SimpleMvc21.csproj" />
<ProjectReference Include="..\SimpleMvc22\SimpleMvc22.csproj" /> <ProjectReference Include="..\SimpleMvc22\SimpleMvc22.csproj" />

View File

@ -0,0 +1,13 @@

namespace SimpleMvc11
{
public class Program
{
public static void Main(string[] args)
{
// Just make sure we have a reference to MVC 1.1
var t = typeof(Microsoft.AspNetCore.Mvc.IActionResult);
System.Console.WriteLine(t.FullName);
}
}
}

View File

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<!--
This project references a shipped version of MVC and should not reference local builds of
the CodeGeneration targets, rzc, or any of the test shims.
-->
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
<!-- Test Placeholder -->
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.7" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.8" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,108 @@
@{
ViewData["Title"] = "Home Page";
}
<div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="6000">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
<li data-target="#myCarousel" data-slide-to="3"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="~/images/banner1.svg" alt="ASP.NET" class="img-responsive" />
<div class="carousel-caption" role="option">
<p>
Learn how to build ASP.NET apps that can run anywhere.
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkID=525028&clcid=0x409">
Learn More
</a>
</p>
</div>
</div>
<div class="item">
<img src="~/images/banner2.svg" alt="Visual Studio" class="img-responsive" />
<div class="carousel-caption" role="option">
<p>
There are powerful new features in Visual Studio for building modern web apps.
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkID=525030&clcid=0x409">
Learn More
</a>
</p>
</div>
</div>
<div class="item">
<img src="~/images/banner3.svg" alt="Package Management" class="img-responsive" />
<div class="carousel-caption" role="option">
<p>
Bring in libraries from NuGet, Bower, and npm, and automate tasks using Grunt or Gulp.
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkID=525029&clcid=0x409">
Learn More
</a>
</p>
</div>
</div>
<div class="item">
<img src="~/images/banner4.svg" alt="Microsoft Azure" class="img-responsive" />
<div class="carousel-caption" role="option">
<p>
Learn how Microsoft's Azure cloud platform allows you to build, deploy, and scale web apps.
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkID=525027&clcid=0x409">
Learn More
</a>
</p>
</div>
</div>
</div>
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="row">
<div class="col-md-3">
<h2>Application uses</h2>
<ul>
<li>Sample pages using ASP.NET Core MVC</li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=518004">Bower</a> for managing client-side libraries</li>
<li>Theming using <a href="https://go.microsoft.com/fwlink/?LinkID=398939">Bootstrap</a></li>
</ul>
</div>
<div class="col-md-3">
<h2>How to</h2>
<ul>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=398600">Add a Controller and View</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699315">Manage User Secrets using Secret Manager.</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699316">Use logging to log a message.</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699317">Add packages using NuGet.</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699318">Add client packages using Bower.</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699319">Target development, staging or production environment.</a></li>
</ul>
</div>
<div class="col-md-3">
<h2>Overview</h2>
<ul>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=518008">Conceptual overview of what is ASP.NET Core</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=699320">Fundamentals of ASP.NET Core such as Startup and middleware.</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=398602">Working with Data</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkId=398603">Security</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=699321">Client side development</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=699322">Develop on different platforms</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=699323">Read more on the documentation site</a></li>
</ul>
</div>
<div class="col-md-3">
<h2>Run &amp; Deploy</h2>
<ul>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=517851">Run your app</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=517853">Run tools such as EF migrations and more</a></li>
<li><a href="https://go.microsoft.com/fwlink/?LinkID=398609">Publish to Microsoft Azure Web Apps</a></li>
</ul>
</div>
</div>

View File

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - SimpleMvc11</title>
<environment names="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment names="Staging,Production">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">SimpleMvc11</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>&copy; 2018 - SimpleMvc11</p>
</footer>
</div>
<environment names="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
@RenderSection("Scripts", required: false)
</body>
</html>

View File

@ -0,0 +1,2 @@
@using SimpleMvc11NetFx
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}