Get the correct version of Mvc for multitargeting
This commit is contained in:
parent
5161ebaf8a
commit
dbcac41be7
|
|
@ -2,7 +2,10 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.Host;
|
using Microsoft.CodeAnalysis.Host;
|
||||||
using Mvc1_X = Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X;
|
using Mvc1_X = Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X;
|
||||||
using MvcLatest = Microsoft.AspNetCore.Mvc.Razor.Extensions;
|
using MvcLatest = Microsoft.AspNetCore.Mvc.Razor.Extensions;
|
||||||
|
|
@ -11,6 +14,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
{
|
{
|
||||||
internal class DefaultTemplateEngineFactoryService : RazorTemplateEngineFactoryService
|
internal class DefaultTemplateEngineFactoryService : RazorTemplateEngineFactoryService
|
||||||
{
|
{
|
||||||
|
private const string MvcAssemblyName = "Microsoft.AspNetCore.Mvc.Razor";
|
||||||
private static readonly Version LatestSupportedMvc = new Version(2, 1, 0);
|
private static readonly Version LatestSupportedMvc = new Version(2, 1, 0);
|
||||||
|
|
||||||
private readonly HostLanguageServices _services;
|
private readonly HostLanguageServices _services;
|
||||||
|
|
@ -70,8 +74,36 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
|
|
||||||
private Version GetMvcVersion(string projectPath)
|
private Version GetMvcVersion(string projectPath)
|
||||||
{
|
{
|
||||||
// TODO: Need to figure out the actual referenced Mvc version in the project. https://github.com/aspnet/Razor/issues/1183
|
var workspace = _services.WorkspaceServices.Workspace;
|
||||||
|
|
||||||
|
var project = workspace.CurrentSolution.Projects.FirstOrDefault(p =>
|
||||||
|
{
|
||||||
|
var directory = Path.GetDirectoryName(p.FilePath);
|
||||||
|
return string.Equals(
|
||||||
|
NormalizeDirectoryPath(directory),
|
||||||
|
NormalizeDirectoryPath(projectPath),
|
||||||
|
StringComparison.OrdinalIgnoreCase);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (project != null)
|
||||||
|
{
|
||||||
|
var compilation = CSharpCompilation.Create(project.AssemblyName).AddReferences(project.MetadataReferences);
|
||||||
|
|
||||||
|
foreach (var identity in compilation.ReferencedAssemblyNames)
|
||||||
|
{
|
||||||
|
if (identity.Name == MvcAssemblyName)
|
||||||
|
{
|
||||||
|
return identity.Version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string NormalizeDirectoryPath(string path)
|
||||||
|
{
|
||||||
|
return path.Replace('\\', '/').TrimEnd('/');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,14 @@
|
||||||
<IncludeOutputGroupsInVSIXLocalOnly>
|
<IncludeOutputGroupsInVSIXLocalOnly>
|
||||||
</IncludeOutputGroupsInVSIXLocalOnly>
|
</IncludeOutputGroupsInVSIXLocalOnly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X\Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.csproj">
|
||||||
|
<Name>Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X</Name>
|
||||||
|
<Private>False</Private>
|
||||||
|
<IncludeOutputGroupsInVSIX>
|
||||||
|
</IncludeOutputGroupsInVSIX>
|
||||||
|
<IncludeOutputGroupsInVSIXLocalOnly>
|
||||||
|
</IncludeOutputGroupsInVSIXLocalOnly>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Razor.Language\Microsoft.AspNetCore.Razor.Language.csproj">
|
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Razor.Language\Microsoft.AspNetCore.Razor.Language.csproj">
|
||||||
<Project>{932f3c9c-a6c0-40d3-ba50-9309886242fc}</Project>
|
<Project>{932f3c9c-a6c0-40d3-ba50-9309886242fc}</Project>
|
||||||
<Name>Microsoft.AspNetCore.Razor.Language</Name>
|
<Name>Microsoft.AspNetCore.Razor.Language</Name>
|
||||||
|
|
@ -246,6 +254,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<VSIXSourceItem Include="..\..\src\Microsoft.CodeAnalysis.Remote.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Remote.Razor.dll" />
|
<VSIXSourceItem Include="..\..\src\Microsoft.CodeAnalysis.Remote.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Remote.Razor.dll" />
|
||||||
<VSIXSourceItem Include="..\..\src\Microsoft.AspNetCore.Mvc.Razor.Extensions\bin\$(Configuration)\net46\Microsoft.AspNetCore.Mvc.Razor.Extensions.dll" />
|
<VSIXSourceItem Include="..\..\src\Microsoft.AspNetCore.Mvc.Razor.Extensions\bin\$(Configuration)\net46\Microsoft.AspNetCore.Mvc.Razor.Extensions.dll" />
|
||||||
|
<VSIXSourceItem Include="..\..\src\Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X\bin\$(Configuration)\net46\Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.dll" />
|
||||||
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.AspNetCore.Razor.Language.dll" />
|
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.AspNetCore.Razor.Language.dll" />
|
||||||
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.dll" />
|
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.dll" />
|
||||||
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.Workspaces.dll" />
|
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.Workspaces.dll" />
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,14 @@ using Microsoft.VisualStudio.Shell;
|
||||||
OldVersionUpperBound = "2.1.0.0",
|
OldVersionUpperBound = "2.1.0.0",
|
||||||
NewVersion = "2.1.0.0")]
|
NewVersion = "2.1.0.0")]
|
||||||
|
|
||||||
|
[assembly: ProvideBindingRedirection(
|
||||||
|
AssemblyName = "Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X",
|
||||||
|
GenerateCodeBase = true,
|
||||||
|
PublicKeyToken = "adb9793829ddae60",
|
||||||
|
OldVersionLowerBound = "0.0.0.0",
|
||||||
|
OldVersionUpperBound = "2.1.0.0",
|
||||||
|
NewVersion = "2.1.0.0")]
|
||||||
|
|
||||||
[assembly: ProvideBindingRedirection(
|
[assembly: ProvideBindingRedirection(
|
||||||
AssemblyName = "Microsoft.AspNetCore.Razor.Language",
|
AssemblyName = "Microsoft.AspNetCore.Razor.Language",
|
||||||
GenerateCodeBase = true,
|
GenerateCodeBase = true,
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%|" />
|
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%|" />
|
||||||
<Asset Type="Microsoft.ServiceHub.Service" d:Source="File" Path="razorLanguageService.servicehub.service.json" />
|
<Asset Type="Microsoft.ServiceHub.Service" d:Source="File" Path="razorLanguageService.servicehub.service.json" />
|
||||||
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Mvc.Razor.Extensions.dll" />
|
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Mvc.Razor.Extensions.dll" />
|
||||||
|
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.dll" />
|
||||||
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Razor.Language.dll" />
|
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Razor.Language.dll" />
|
||||||
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.AspNetCore.Razor.Language.dll" />
|
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.AspNetCore.Razor.Language.dll" />
|
||||||
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Razor.dll" />
|
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Razor.dll" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue