我有一个.NET Core 2.0多项目解决方案。我的主项目名为myproject.Web,并有一个文件夹Views(带子文件夹),其中包含所有cshtml
个文件。另外,myproject.Web依赖于另一个项目myproject.UI,它还有一个文件夹Views,其中包含许多项目通用的cshtml
。
当我在命令行上执行dotnet run
时,项目myproject.Web运行正常。但是,当我dotnet publish
和(在发布文件夹中)执行dotnet myproject.Web.dll
时,项目无法按预期工作。登录页面在浏览器中加载,但是当我登录时收到HTTP 404错误。检查后,我发现Views文件夹中的所有文件都没有被复制。这似乎是问题的可能来源。
我已经设法将UI项目中的cshtml文件放到了发布文件夹中,但是经过我的努力,我无法将cshtml
中的myproject.Web\Views
文件放到publish文件夹中。
我在.csproj
文件的相关部分下面发帖。
<ItemGroup>
<Folder Include="Views\" />
</ItemGroup>
<ItemGroup>
<None Include="Views\**\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</None>
</ItemGroup>
<Target Name="PostPublish" AfterTargets="AfterPublish">
<Exec Command="xcopy /E /Y /R "$(ProjectDir)..\myproject.UI\Views\*" $(PublishDir)Views\*" />
</Target>
更新
以下Kirk的评论解释了为什么cshtml
文件没有被复制。但这并不能解释为什么我会收到404错误。简而言之:
dotnet myproject.Web.dll
输出未显示任何错误(以下复制完整性)。dotnet run
执行时,它可以正常工作。 dotnet myproject.Web.dll
输出:
Hosting environment: Local
Content root path: C:\Projects\Master-Demos\Code\myproject.Web\bin\Release\netcoreapp2.0\publish
Now listening on: http://0.0.0.0:57579
Application started. Press Ctrl+C to shut down.
ContentProvider [Watch]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml
ContentProvider [GetFileInfo]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml
ContentProvider [GetFileInfo]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml
ContentProvider [Watch]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml
ContentProvider [GetFileInfo]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml
ContentProvider [GetFileInfo]: /Views/Home/../Shared/Widgets/_TileEnriched.cshtml