我想要一个msbuild任务来编译视图,这样我就可以看到编译时是否存在编译错误...编译时.有任何想法吗?
只是重建和在Visual Studio 2008中执行Clean + Build之间有什么区别?是清洁 + 建立不同然后做清洁 + 重建?
Visual Studio 2017(15.x)支持C#7,但Visual Studio 2015(14.x)呢?
我怎样才能使用C#7?
我刚刚升级了MVC 3项目(ASP.net 4)中的包,现在我在访问该项目中的页面时收到以下错误消息:
'/ MyApplication'应用程序中的服务器错误.
无法加载文件或程序集"System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性公钥= 31bf3856ad364e35"或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.IO.FileLoadException:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
程序集加载跟踪:下列信息有助于确定程序集"System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性公钥= 31bf3856ad364e35"无法加载.
===预绑定状态信息===日志:用户= IIS APPPOOL\ASP.NET v4.0日志:DisplayName = System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase = file:/// C:/.../ LOG:初始PrivatePath = C:...\bin调用程序集:Microsoft.Web.Helpers,Version = 2.0.0.0,Culture = neutral ,PublicKeyToken = 31bf3856ad364e35.===日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:C:...\web.config日志:使用主机配置文件:C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config日志:使用C中的机器配置文件: \的Windows\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config中.日志:后策略引用:System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64 /v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPages.Razor.DLL.日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPages.Razor/System .Web.WebPages.Razor.DLL.日志:新的URL文件的尝试下载:/// C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL.警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集的设置(hr = 0x80131040).探测终止.
堆栈跟踪:
[FileLoadException:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)]
Microsoft.Web.Helpers.PreApplicationStartCode.Start()+ 0[InvalidOperationException:预应用程序启动初始化方法启动类型Microsoft.Web.Helpers.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'System.Web.WebPages.Razor,Version = …
我刚刚开始在Visual Studio 2017中使用我的旧解决方案.只需打开旧IDE中的解决方案即可无缝工作.c#应用程序项目现在默认为c#7.0编译器.这些项目的属性页面(编译/高级)可以轻松选择编译器的目标语言版本,默认为最新版本.
我找不到在asp.net web项目中启用c#7.0的方法.如果我写一个如下声明:
if (int.TryParse("1", out int myInt)) { ... }
Run Code Online (Sandbox Code Playgroud)
IDE警告我说我需要使用该语言的7+版本.
我对这个主题的研究表明,我应该定位web.config文件的system.codedom编译器区域中的特定c#版本,以便定位最新的Roslyn版本.
我现在拥有的是:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
Run Code Online (Sandbox Code Playgroud)
针对c#6的目标是什么.只要我已经使用nuget下载了最新的Roslyn,c#7的正确设置是什么?
更新 下面是Web项目可用的编译选项的屏幕截图(它是意大利语VS2017,但应该很容易理解).没有可能在那里选择目标c#版本.
这个似乎是在从vs2015升级到vs2017之后发起的.错误是
编译器错误消息:编译器失败,错误代码为-532462766.
一些笔记..
跟踪我有什么
ModuleName AspNetInitializationExceptionModule
Notification BEGIN_REQUEST
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode The operation completed successfully.
Run Code Online (Sandbox Code Playgroud)
完整的信息是这样的
C:\Windows\SysWOW64\inetsrv>C:\Inetpub\vhosts\xxx\example.com\bin\roslyn\csc.exe /t:library /utf8output /nostdlib+
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\6c18e943\c9225320_3eb1d201\Antlr3.Runtime.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\e4a088a1\d00a7551_3eb1d201\Microsoft.AI.Agent.Intercept.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\cb16e378\ec642953_3eb1d201\Microsoft.AI.WindowsServer.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.DynamicData\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.DynamicData.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\3bcba04c\243c6d4f_3eb1d201\Microsoft.AI.DependencyCollector.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\44aabbe1\43688156_3eb1d201\Microsoft.AspNet.Identity.EntityFramework.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\c0b08566\baa93959_3eb1d201\Microsoft.Owin.Security.dll" /R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activation\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activation.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\4ed695a8\d6318e55_3eb1d201\Microsoft.AspNet.Identity.Core.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Extensions\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Extensions.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Routing\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Routing.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\e1faf943\7dc91593_3eb1d201\System.Web.Helpers.dll" /R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\d06f7c29\f00a7a59_3eb1d201\Microsoft.Owin.Security.Facebook.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\72fa63a2\3e710999_3eb1d201\System.Web.Optimization.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\69efa965\80b6a15a_3eb1d201\Microsoft.Owin.Security.OAuth.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\b5b18ada\bafef257_3eb1d201\Microsoft.Owin.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.ApplicationServices\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.ApplicationServices.dll"
/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.WorkflowServices\v4.0_4.0.0.0__31bf3856ad364e35\System.WorkflowServices.dll"
/R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\57e80104\20ff5a91\assembly\dl3\57f6acbf\bf5aa39d_3eb1d201\System.Web.WebPages.Razor.dll" …Run Code Online (Sandbox Code Playgroud) 我有一个基于ASP.NET Web表单的应用程序,它也支持MVC 5.我在我的项目中包含了MVC 5 API控制器,我必须将Json从4.5版升级到7.0版.在我启动应用程序后进行这些更改后,出现以下错误:
无法加载文件或程序集"System.Web.Mvc"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我检查了参考文献System.Web.Mvc.在属性对话框中,运行时版本v4.0.30319和版本是5.0.0.0.在web.config中,程序集设置如下:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="AntiXssLibrary" publicKeyToken="d127efab8a9c114f" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<!--<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>-->
<dependentAssembly>
<assemblyIdentity …Run Code Online (Sandbox Code Playgroud) 我有一个.NET MVC项目,我正在尝试使用Jenkins进行部署.
我一直让Jenkins运行msbuild,然后使用RoboCopy复制生成的文件.我想切换到只使用发布配置文件.发布配置文件在我的本地计算机上使用Visual Studio正常工作,但在Jenkins主机上它使用msbuild失败.
它给出的错误是
ASPNETCOMPILER:错误ASPRUNTIME:找不到路径'C:\ Program Files(x86)\ Jenkins\jobs\myProject\workspace\myProject\_ obj\Debug\AspnetCompileMerge\Source\bin\roslyn\csc.exe'的一部分.[C:\ Program Files(x86)\ Jenkins\jobs\myProject\workspace\myProject\calendar.csproj]
我正在使用Microsoft.Net.Compilers nuget包来引入C#编译器,因为项目中的一些协作者仍在Visual Studio 2013上,但我们在项目中使用了C#6语言功能.
事实上,在添加发布标志之前,项目在jenkins上使用MSBuild构建得很好.它只是在添加/p:DeployOnBuild=true;PublishProfile=MyProfile它开始失败的设置之后......但是使用Visual Studio,发布步骤工作得很好,而且roslyn编译器甚至被复制到本地机器上的obj\Debug\AspnetCompileMerge\Source\bin \文件夹中.是什么赋予了?
老实说,既然msbuild14在Jenkins服务器上可用,它可能甚至不需要 roslyn csc.exe文件.有没有办法让msbuild忽略它?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>\\myserver\someshare\mysite</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>True</EnableUpdateable>
<DebugSymbols>False</DebugSymbols>
<WDPMergeOption>DonotMerge</WDPMergeOption>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我试过更新编译器包.
我在.csproj文件中添加了步骤,将丢失的编译器文件强制复制到AspnetCompileMerge目录(我已经将它们复制到bin\roslyn目录以解决 另一个问题)
<Target Name="CopyRoslynFiles" AfterTargets="BeforeBuild">
<ItemGroup>
<RoslynFiles Include="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*" Exclude="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*.sys" />
</ItemGroup>
<MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
<MakeDir Directories="$(WebProjectOutputDir)\obj\$(Configuration)\AspnetCompileMerge\Source\bin\roslyn" />
<Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /> …Run Code Online (Sandbox Code Playgroud) 我正在使用此代码来检查queryable值:
visitor.Queryable = queryable ?? throw new Exception("error message");
Run Code Online (Sandbox Code Playgroud)
我收到了编译错误:
错误CS1525:无效的表达式术语'throw'
我正在使用4.5.2 .net框架.有任何想法吗?
当我运行我的应用程序时,VS2015我得到一个窗口,csc.exe has stopped working如下所示:

单击关闭程序后,我在浏览器中收到另一个错误:
Server Error in '/' Application.
Run Code Online (Sandbox Code Playgroud)
详细的编译器输出如下所示:
C:\ Program Files(x86)\ IIS Express> D:_myURL\bin\roslyn\csc.exe/t:library/utf8output/nostdlib +/R:"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll"/ R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll"
可能是什么问题?
c# ×5
.net ×3
asp.net ×3
asp.net-mvc ×3
c#-7.0 ×2
msbuild ×2
asp.net-4.0 ×1
build ×1
dependencies ×1
iis-8.5 ×1
jenkins ×1
razor ×1
rebuild ×1
roslyn ×1