2016-10-25 4 views
3

У меня есть два идентичных проекта ASP.Net 4.6 MVC, проект 1 использует roslyn complier внутри сайта, который работает нормально.Asp.net MVC Razor view - CS1525: Недопустимый термин выражения '.'

C: \ Windows \ system32 \ Inetsrv> C: \ Websites1 \ Bin \ Рослин \ csc.exe Microsoft (R) Visual C# компилятор версии 1.2.0.60325

Со вторым проектом я нахожусь получив ошибку ниже, она использует компилятор из .Net framework.

C: \ Windows \ system32 \ Inetsrv> "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ csc.exe" Microsoft (R) Visual C# Compiler версии 4.6.1590.0

Line 6: @if (!Model?.Item?.IsDerived(Templates.PageMetadata.ID) ?? true) Line 7: { Line 8: return;

c:\Website2\Views\metadata.cshtml(6,17): error CS1525: Invalid expression term '.' c:\Website2\Views\metadata.cshtml(6,18): error CS1003: Syntax error, ':' expected c:\Website2\Views\metadata.cshtml(6,23): error CS1525: Invalid expression term '.' c:\Website2\Views\metadata.cshtml(6,24): error CS1003: Syntax error, ':' expected c:\Website2\Views\metadata.cshtml(6,68): error CS1002: ; expected c:\Website2\Views\metadata.cshtml(6,68): error CS1525: Invalid expression term ')' c:\Website2\Views\metadata.cshtml(6,69): error CS1002: ; expected

Я использовал Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform как на проекте.

Мой вопрос в том, почему второй проект не использует roslyn complier и есть ли способ заставить его использовать roslyn complier внутри сайта?

Я также пробовал Microsoft.Net.Compilers пакет nuget.

ответ

2

Попробуйте изменить значение «Целевая структура» в свойствах приложения на новый.

+0

Я попытался изменить его на 5.2. Не имеет никакого значения. – Huzzi

+0

Я пробовал другую версию, такую ​​как 4.6.1/5.2 без разницы. – Huzzi

7

Понял работает теперь после добавления следующего в web.config

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> </compilers> </system.codedom>

+0

Обратите внимание, что там есть номер версии сборки. Если вы устанавливаете 1.0.3, вам нужно изменить '1.0.0.0' на' 1.0.3.0' – DdW

2

Я просто столкнулся с аналогичной проблемой и установил ее, делая, как Huzzi предложил путем добавления тегов в сети основного веб-проекта .config и убедитесь, что вы установили «Microsoft.CodeDom.Providers.DotNetCompilerPlatform» из nuget.