标签: aspnet-compiler

aspnet_compiler无法映射路径'/'

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)

得到了我的预期.

我究竟做错了什么?

aspnet-compiler iis-7.5 asp.net-4.5

6
推荐指数
1
解决办法
1043
查看次数

Aspnet_compiler.exe做了什么?

我正在尝试为我们的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 asp.net-mvc aspnet-compiler pre-compilation

6
推荐指数
0
解决办法
4930
查看次数

ASP.Net上的预编译和启动时间

我正在ASP.Net 2.0中开发一个(相对较小的)网站.在发送可执行文件之前,我还使用nAnt对我的项目进行一些简单的调整.在目前的状态下,该网站使用"预编译"

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

我注意到在重新启动IIS池之后(在空闲关闭或循环之后),应用程序在重新联机(并且到达Application_start)之前最多需要20秒.

我在Visual Studio中直接调试时没有相同的问题(启动需要2秒),所以我想知道aspnet_compiler是不是真的好主意.

我在MSDN上找不到多少.如何编译您的网站进行制作?

c# asp.net compilation aspnet-compiler startup

5
推荐指数
1
解决办法
2390
查看次数

ASP.NET预编译的优点是什么?

使用Aspnet_compiler.exe而不是通过Visual Studio进行传统发布有用吗?那么资源(resx)文件呢?

asp.net publish aspnet-compiler

5
推荐指数
1
解决办法
2205
查看次数

从文件内部强制使用MSBuild的工具版本?

我最近将我的项目移到.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)

msbuild aspnet-compiler

5
推荐指数
1
解决办法
2081
查看次数

将自定义属性添加到MSBuild任务

我让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功能?

msbuild asp.net-mvc aspnet-compiler msbuild-task

5
推荐指数
1
解决办法
1417
查看次数

为什么aspnet_compiler需要对构建服务器上的Temporary ASP.NET Files文件夹进行写访问?

我们使用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\TempBuildDir

ASPNETCOMPILER:错误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 aspnet-compiler microsoft-web-deploy

5
推荐指数
1
解决办法
2633
查看次数

如何从命令行覆盖解决方案的 aspnetcompiler.targetpath?

我正在打电话 MSBUILD.exe \pathtosolution\solution.sln /p:Configuration=Release /p:OutputDir=\pathfordlls\ /p:WebProjectOutputDir=\pathtocompileto\

当它完成将 DLL 编译到正确的目录并调用 aspnet_compiler 时,我希望它使用 WebProjectOutputDir - 但它使用的是解决方案文件内指定的目录 Release.AspNetCompiler.TargetPath = "PrecompiledWeb\lidacweb\

我需要做什么才能让它接受这个论点?我错过了什么吗?

asp.net msbuild webforms aspnet-compiler visual-studio

5
推荐指数
0
解决办法
297
查看次数

System.Web.Mvc 5.2.2.0与aspnet_compiler的5.2.3.0版本控制问题

在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)

c# asp.net-mvc aspnet-compiler thinktecture-ident-model

5
推荐指数
1
解决办法
5088
查看次数

部署了另一个应用程序后无法找到CodeDom提供程序

我在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=\&quot;Web\&quot; /optionInfer+" />
Line 58:     </compilers>
Run Code Online (Sandbox Code Playgroud)

源文件:C:\ inetpub\wwwrootprettysite\THEIR APPLICATION\web.config

问题

为什么会这样?
为什么应用程序的webconfig中存在"源错误" 以及它如何影响我的应用程序?
如何在不破坏应用程序的情况下修复应用程序?

澄清 :

  • 应用程序层次结构正确,其应用程序应
    安装在root中.
  • 安装的.NET框架是4.5.2
  • 他们的应用程序是使用在bin/roslyn中提供的Roslyn编译器
  • 我的应用程序web.configs没有任何<system.codedom>部分.

asp.net aspnet-compiler iis-7.5 roslyn

5
推荐指数
1
解决办法
7374
查看次数