Windows 4.5 x64上的.NET 4.5.2,IIS 8.5.我在/ localhost /有一个ASP.NET网站.DEFAULT网站已禁用,新网站使用正确的绑定创建.我正在尝试将其预编译到位:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319> aspnet_compiler -c -v /
error ASPRUNTIME: Failed to map the path '/'.
Run Code Online (Sandbox Code Playgroud)
我尝试了元数据库路径路由:
aspnet_compiler -c -m lm/w3svc/2/root
error ASPRUNTIME: Failed to map the path '/'.
Run Code Online (Sandbox Code Playgroud)
我可以通过指定物理路径来编译它,但我不想这样做,因为同一个应用程序存在于具有不同物理路径(开发,QA,生产)的不同服务器上.甚至配置数据库路径都不相同."/"到处都是一样的.
为了笑容,我把它添加到网站的一个页面,以确保我没有失去理智:
Response.Write(Server.MapPath("/"));
Run Code Online (Sandbox Code Playgroud)
得到了我的预期.
我究竟做错了什么?
我正在尝试为我们的MVC5.1应用程序预编译视图以提高第一个加载性能(有关更多上下文,请参阅此问题).
我正在玩aspnet_compiler.exe:
aspnet_compiler -p d:/path/to/myapp/ -v myapp
Run Code Online (Sandbox Code Playgroud)
我可以肯定地看到正在进行的编译 - 关于Obsolete方法使用的警告.但它把结果放在哪里?
在实验之前我已经清理过Temporary Asp.Net Files,只是为了看到结果.编译结束后,什么都没发生.双方c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\并c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\仍然是空的.
我也尝试使用精确路径执行虚拟路径
aspnet_compiler -p d:/path/to/myapp/ -v d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)
那个文件夹留空了.但是编译器的第二次运行要快得多,因为我没有清理构建.这让我觉得结果可以在某处获得.
所以我的问题是:它在哪里存储编译结果?如何让IIS使用这些结果而不是实时编译?
更新:我已经找到了如何捕获编译的输出.只需将路径指定为最后(或第一个)参数:
aspnet_compiler -p d:/path/to/myapp/ -v / d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)
这就留下了一个问题,我怎样才能让IIS拿起它?
我正在ASP.Net 2.0中开发一个(相对较小的)网站.在发送可执行文件之前,我还使用nAnt对我的项目进行一些简单的调整.在目前的状态下,该网站使用"预编译"
aspnet_compiler.exe -nologo -v ${Appname} -u ${target}
我注意到在重新启动IIS池之后(在空闲关闭或循环之后),应用程序在重新联机(并且到达Application_start)之前最多需要20秒.
我在Visual Studio中直接调试时没有相同的问题(启动需要2秒),所以我想知道aspnet_compiler是不是真的好主意.
我在MSDN上找不到多少.如何编译您的网站进行制作?
使用Aspnet_compiler.exe而不是通过Visual Studio进行传统发布有用吗?那么资源(resx)文件呢?
我最近将我的项目移到.NET 4.0上,并且在构建中运行ASP.NET编译器时遇到了一些麻烦.这不起作用,因为默认情况下MSBuild在运行ASP.NET编译器时使用旧的工具版本.
我已经能够解决它我明确指定工具版本(是的,我正在运行MSBuild 4.0),如下所示:
msbuild /t:MyTarget /tv:4.0 mybuildfile.msbuild
Run Code Online (Sandbox Code Playgroud)
我可以在构建文件本身中使用任何指令,这样我就能以更简单的方式调用msbuild吗?
msbuild /t:MyTarget mybuildfile.msbuild
Run Code Online (Sandbox Code Playgroud) 我让TeamCity为ASP.NET MVC 3应用程序运行MSBuild任务.现在每隔一段时间(看似随机)抛出"ASPNETCOMPILER:错误ASPRUNTIME:已经卸载了运行该线程的应用程序域." 它发生在MSBuild执行"MvcBuildViews"并运行aspnet_compiler.exe时.
现在我知道aspnet_compiler.exe(http://msdn.microsoft.com/en-us/library/ms229863 (vs.80 ) .aspx)有一个"-errorstack"开关可以给我一个关于这个的堆栈跟踪信息错误,但似乎AspNetCompiler Task没有暴露设置此属性的可能性(http://msdn.microsoft.com/en-us/library/ms164291.aspx).
所以我的问题是 - 有没有办法将任何自定义属性传递给现有的MSBuild任务,或者我必须在MSBuild之外手动运行aspnet_compiler.exe以启用-errorstack功能?
我们使用CI服务器(Jenkins)编译ASP.NET项目并部署到我们的Web服务器.
我想在部署之前预编译站点以提高性能,因此我PrecompileBeforePublish在发布配置文件(.pubxml)中设置了该属性.
但是,当Jenkins运行构建时,AspNetPreCompile任务失败并显示错误:
AspNetPreCompile:
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe
-v/
-pc:\ jenkins\workspace\DeployJob\MyProject\obj\Release\AspnetCompileMerge\Source
-c
c:\ jenkins\workspace\DeployJob\MyProject的\ OBJ \发布\ AspnetCompileMerge\TempBuildDirASPNETCOMPILER:错误ASPRUNTIME:当前标识(JenkinsUser)没有对"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"的写入权限.
请注意,这不是将Web站点部署到的计算机,它只是一个构建服务器.我可以授予当前身份(JenkinsUser)访问Temporary ASP.NET Files文件夹的权限,但我宁愿不必在一个只是充当愚蠢的Jenkins奴隶的盒子上搞乱文件系统权限.
有没有办法解决?为什么aspnet_compiler试图将站点写入Temporary ASP.NET Files文件夹,有没有办法让它使用不同的临时目录,例如%TEMP%?
我正在打电话
MSBUILD.exe \pathtosolution\solution.sln /p:Configuration=Release /p:OutputDir=\pathfordlls\ /p:WebProjectOutputDir=\pathtocompileto\
当它完成将 DLL 编译到正确的目录并调用 aspnet_compiler 时,我希望它使用 WebProjectOutputDir - 但它使用的是解决方案文件内指定的目录
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\lidacweb\
我需要做什么才能让它接受这个论点?我错过了什么吗?
在Visual Studio中打开视图编译时遇到问题.我有一个相当标准的ASP.NET MVC 5应用程序,有很多参考.我引用System.Web.Mvc 5.2.3.0(最新版本),但编译似乎与v.5.2.2.0 vs 5.2.3.0有问题.优秀的工具AsmSpy(https://github.com/mikehadlow/AsmSpy)告诉我哪些程序集引用了System.Web.Mvc的哪个版本:
Reference: System.Web.Mvc
5.1.0.0 by Autofac.Integration.Mvc
5.0.0.0 by Glimpse.Mvc5
5.0.0.0 by Microsoft.Web.Mvc
3.0.0.0 by Mindscape.Raygun4Net.Mvc
5.2.3.0 by Myrepo.Web.Common
5.2.3.0 by MyApp
5.2.2.0 by Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc
Run Code Online (Sandbox Code Playgroud)
所以,有罪的是Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc.但是,我已经将程序集绑定重定向添加到应用程序的根web.config,如下所示:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- lots more -->
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<!-- lots more -->
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
为了试图找到问题的根源,我打开了Diagnostic构建日志,它在260,000行日志中向外吐出,包括:
16> Unified primary reference "System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". (TaskId:183)
16> Using this version instead of original version "5.1.0.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Autofac.Mvc5.3.3.4\lib\net45\Autofac.Integration.Mvc.dll" because of a …Run Code Online (Sandbox Code Playgroud) 我在IIS 7.5下的站点中部署了两个Web应用程序
site.com/myApp site.com/anotherMyApp
现在另一个开发者将他们的应用程序部署为root应用
site.com/
现在,当我访问site.com/myApp或/anotherMyApp它抛出:
无法找到CodeDom提供程序类型"Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35".
来源错误:
Line 54: <system.codedom>
Line 55: <compilers>
Line 56: <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" />
Line 57: <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=\"Web\" /optionInfer+" />
Line 58: </compilers>
Run Code Online (Sandbox Code Playgroud)
源文件:C:\ inetpub\wwwrootprettysite\THEIR APPLICATION\web.config
为什么会这样?
为什么应用程序的webconfig中存在"源错误" 以及它如何影响我的应用程序?
如何在不破坏应用程序的情况下修复应用程序?
澄清 :
<system.codedom>部分.aspnet-compiler ×10
asp.net ×5
msbuild ×4
asp.net-mvc ×3
c# ×2
iis-7.5 ×2
asp.net-4.5 ×1
compilation ×1
msbuild-task ×1
publish ×1
roslyn ×1
startup ×1
webforms ×1