我使用" new"创建了一个VS2017解决方案。 csproj
格式,它是使用Nancyfx编写的web .net 4.6.1应用程序,通过owin和IIS提供页面。
我的所有观看次数都在Views
文件夹下,但如果我没有设置Copy to Output
选项,则IIS无法找到它们(我的自定义配置文件也是如此)。
我认为问题是输出目录自动设置为bin\net461\win7-x86
而不是简单bin
,并且Web应用程序的工作目录设置为输出目录,所以我必须设置copy to output
选项。
如何使用新的csproj格式,但保留编辑视图文件而无需重建应用程序的功能?我已经尝试将输出文件夹设置为bin
,但会被忽略。我还尝试在“调试”选项卡中设置“工作目录”值,但无济于事。我在每个配置(调试/发布)中设置了值,因此不是问题。
这是我的csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'" />
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Owin" Version="1.1.2" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="Nancy" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Authentication.Forms" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Authentication.Stateless" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Bootstrappers.Unity" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Serialization.JsonNet" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Validation.FluentValidation" Version="2.0.0-clinteastwood" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\*.sshtml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Configuration" />
</ItemGroup>
</Project>
答案 0 :(得分:1)
经过两天的尝试后,我找到了问题的根本原因:它不是VS / csproj问题,而是Nancyfx 2.0配置问题。
对于每个感兴趣的人都是我为解决问题而采取的步骤:
IRootPathProvider
配置为返回IHostingEnvironment.ContentRootPath
类Startup
值
IRootPathProvider
覆盖Bootstrapper
IRootPathProvider RootPathProvider { get; }
Bootstrapper
中覆盖configure方法,如下所示。 / LI>
方法Bootstrapper.Configure
:
public override void Configure(INancyEnvironment environment)
{
base.Configure(environment);
#if DEBUG
// Disable view caching in debug mode
environment.Views(true, true);
#endif
}
现在从VS项目目录(而不是bin文件夹)读取视图,并且不会缓存视图,因此不会在每次视图更改之间进行重建。在csproj
中,您可以轻松放置:
<None Include="Views\**\*.sshtml" />