查看文件夹未被dotnet发布

时间:2018-02-12 12:05:37

标签: c# razor asp.net-core .net-core

我有一个.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  &quot;$(ProjectDir)..\myproject.UI\Views\*&quot; $(PublishDir)Views\*" />
  </Target>

更新

以下Kirk的评论解释了为什么cshtml文件没有被复制。但这并不能解释为什么我会收到404错误。简而言之:

  1. 登录页面不显示404(按预期方式工作)。
  2. 执行记录后出现404错误。
  3. dotnet myproject.Web.dll输出未显示任何错误(以下复制完整性)。
  4. 此行为仅发生在已发布的工件上,当使用dotnet run执行时,它可以正常工作。
  5. 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
    

0 个答案:

没有答案