在 Visual Studio 2017 中,当点击Ctrl+F5运行我的 ASP.NET Framework Web API 服务器时,我得到:
找不到文件... bin\roslyn\csc.exe:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
在包管理器控制台中运行不是永久修复,因为当包文件丢失时服务器错误再次出现。我怎样才能一劳永逸地摆脱这个错误,以便在我重新打开、构建和运行我的 Visual Studio 解决方案时自动(并静默)重新安装所需的包?
重现错误的代码:http
:
//henke.atwebpages.com/SrvrErr-reproduce.zipfile 1
(原文来自
https://github.com/aspnet/AspNetDocs/tree/master/aspnet/web-api/overview/advanced /calling-a-web-api-from-a-net-client/sample/server/ProductsApp )
1请将扩展名从 重命名zipfile为zip。
当我更新我的dotNet MVC项目以使用Microsoft.CodeDom.Providers.DotNetCompilerPlatform的v1.0.6时,我得到部署问题,因为roslyn目录不再位于部署的bin目录下.
我的项目中有Microsoft.Net.Compilers的v2.3.1,除了通过VS2015的Manage NuGet Packages功能更新Microsoft.CodeDom.Providers.DotNetCompilerPlatform之外,项目中没有任何其他内容被更改.
如果我恢复到Microsoft.CodeDom.Providers.DotNetCompilerPlatform的v1.0.5一切正常.
看起来好像Microsoft.CodeDom.Providers.DotNetCompilerPlatform的更新版本正在破坏/删除项目中的Microsoft.Net.Compilers引用.
我尝试从我的项目中卸载然后重新安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers,但这并没有解决问题.
我尝试了以下StackOverflow文章中的建议但没有成功.
找不到路径的一部分... bin\roslyn\csc.exe
我还尝试手动将roslyn目录复制到输出目录,但是在项目的每个构建中都删除了该目录.
如果有人能帮助阐明如何解决问题,我将不胜感激.
莱斯
我们未能成功使用Windows服务部署OWIN Web API服务(如此StackOverflow问题中所述).经过多次尝试解决问题后,我们决定简单地创建一个ASP.NET Web API站点并通过IIS进行部署.
在本地运行时,可以访问所有操作.但是,如果我们发布网站(使用Build - > Publish或其任何变体),我们会观察到以下内容:
URL ACL已创建如下:
netsh http add urlacl http://+:8098/api user=Everyone
Run Code Online (Sandbox Code Playgroud)
防火墙似乎没有阻塞端口(我们可以通过上面的步骤1来实现).URL ACL存在,公司中的每个人都可以访问它(他们应该这样做).我们不知道为什么会发生这种情况,似乎无法找到合适的答案.
有人可以建议我们可能忽略的原因或可能的解决方案吗?
UPDATE
从控制器中删除逻辑并重新发布后,Windows应用程序事件日志中出现以下(缩写)警告信息:
Event code: 3005
Event message: An unhandled exception has occurred.
Exception information:
Exception type: HttpException
Exception message: Could not find a part of the path 'D:\websites\LoggingWebApi\bin\roslyn\csc.exe'.
Run Code Online (Sandbox Code Playgroud)
这是有趣的.看起来Publish没有使用构建版本分发Roslyn编译器.
更新2 控制器上最简单的操作方法是:
[HttpGet]
[Route("Status")]
public string Status()
{
return "Online";
}
Run Code Online (Sandbox Code Playgroud)
即使手动将Roslyn程序集复制到bin文件夹中的服务器之后,该方法也会返回HTTP 503.应用程序事件日志中不会显示任何错误消息.
当这个方法在本地运行时(在我的机器上),它返回一个JSON字符串,我可以在文本编辑器中打开它.
我最近将新的.NET编译器NuGet包(Microsoft.CodeDom.Providers.DotNetCompilerPlatfor)添加到现有的旧版MVC.NET网站.现在,当尝试发布网站时,我得到以下异常:
找不到路径的一部分...\obj\DEV\AspnetCompileMerge\Source\bin\roslyn\csc.exe'
我已尝试过这个问题中提到的所有内容,但没有任何效果.毕竟,这是一个稍微不同的问题.该帖子中提到的问题是构建异常,我的解决方案在本地构建良好.卸载NuGet包有效,但这不是一个真正的解决方案.
问题是基本相同,这一个,但也无解.
发布输出:
4>------ Publish started: Project: Jdn.ArticleCatalogue.Web, Configuration: DEV Any CPU ------
4>Connecting to \\vm-arcawebdev01\WEBSITES\ArticleCatalogue...
4>Transformed Web.config using D:\DOTNET\Local\Logistics.Web\Portal\DEV\Application Projects\Article Catalogue\Jdn.ArticleCatalogue.Web\Web.DEV.config into obj\DEV\TransformWebConfig\transformed\Web.config.
4>Copying all files to temporary location below for package/publish:
4>obj\DEV\AspnetCompileMerge\Source.
4>C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p "D:\DOTNET\Local\Logistics.Web\Portal\DEV\Application Projects\Article Catalogue\Jdn.ArticleCatalogue.Web\obj\DEV\AspnetCompileMerge\Source" "D:\DOTNET\Local\Logistics.Web\Portal\DEV\Application Projects\Article Catalogue\Jdn.ArticleCatalogue.Web\obj\DEV\AspnetCompileMerge\TempBuildDir" -keyfile "..\..\..\Solution Items\Jdn.LogisticsPortal.snk"
4>ASPNETCOMPILER(0,0): Error ASPRUNTIME: Could not find a part of the path 'D:\DOTNET\Local\Logistics.Web\Portal\DEV\Application Projects\Article Catalogue\Jdn.ArticleCatalogue.Web\obj\DEV\AspnetCompileMerge\Source\bin\roslyn\csc.exe'.
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?