我曾经在我的开发环境中在本地IIS上托管我的ASP.NET站点(不是核心)
这样做有助于我避免使用IIS Express(每次启动和停止IIS表达都非常不舒服。)
这样我所要做的就是重建和刷新网站
我的目标是以相同的方式使用ASP.NET核心
我读到了这个:https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x并没有顺利进行
我正在寻找的是在每次C#代码更改(需要构建)之后,在没有部署/发布的情况下执行此操作。
我使用ASP.NET core 2& IIS 10
答案 0 :(得分:2)
如果需要调试应用程序,可以将ASP.NET Core应用程序配置为默认的IIS启动。
创建新的启动配置文件以添加开发时IIS支持。在Visual Studio的解决方案资源管理器中,右键单击项目并选择属性。选择调试标签。从启动下拉列表中选择 IIS 。确认已使用正确的URL启用启动浏览器功能。
或者
或者,手动将启动配置文件添加到应用中的 launchSettings.json 文件中:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "http://localhost/WebApplication2",
"sslPort": 0
}
},
"profiles": {
"IIS": {
"commandName": "IIS",
"launchBrowser": "true",
"launchUrl": "http://localhost/WebApplication2",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
答案 1 :(得分:1)
您可以利用ASPNETCore模块的app_offline.htm功能,并将其合并到构建过程中。
但是您需要发布站点并从该文件夹而不是项目文件夹运行IIS站点/虚拟应用程序。
在下面的示例中,我们将站点发布到相对于sln位置的“已发布站点”文件夹中,但仅用于Debug版本。
我还假设构建过程所花费的时间比旋转过程所花费的时间长。
创建一个PreBuild目标,该目标将在publish文件夹中创建app_offline.htm文件。
<Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="'$(Configuration)'=='Debug'">
<Exec Command="IF EXIST "$(SolutionDir)published-site" (
 echo. 2>"$(SolutionDir)published-site\app_offline.htm"
)" />
</Target>
创建一个PostBuild目标,该目标将删除app_offline.htm文件,然后调用dotnet publish。
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)'=='Debug'">
<Exec Command="IF EXIST "$(SolutionDir)published-site\app_offline.htm" (
 del "$(SolutionDir)published-site\app_offline.htm"
)

dotnet publish --no-build --no-restore "$(ProjectPath)" -c $(ConfigurationName) -o "$(SolutionDir)published-site"" />
</Target>
答案 2 :(得分:0)
如果没有部署/发布,则无法实现。但您可以考虑使用自动部署作为解决方法。例如,您可以使用Auto Deploy或extending the MSBuild process等扩展程序。