Home View folder not being copied by dotnet publish
Reply: 0

View folder not being copied by dotnet publish

user46359
1#
user46359 Published in September 20, 2018, 4:34 pm

I have a .NET Core 2.0 multiproject solution. My main project is named myproject.Web and has a folder Views (with subfolder) where I have all the cshtml files. In addition, myproject.Web depends on another project, myproject.UI, which also has a folder Views which contains more cshtml that are common to many projects.

The project myproject.Web runs fine when I execute dotnet run on the command line. However, when I dotnet publish and (in the publish folder) execute dotnet myproject.Web.dll the project does not work as expected. The landing page loads in the browser, but when I log in I received HTTP 404 error. After inspection I found that none of the files in the Views folder were being copied. That seems to be the likely source of the problem.

I have managed to get the cshtml files in the UI project into the publish folder, but after all my efforts I cannot get the cshtmlfiles in myproject.Web\Views into the publish folder.

I post below the relevant parts of my .csproj file.

  <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>

Update

The comment by Kirk below explains why the cshtml files are not being copied. But that does not explain why I get the 404 error. In brief:

  1. The 404 does not appear for the login page (it works as expected).
  2. The 404 error appears after performing logging.
  3. The dotnet myproject.Web.dll output does not show any error (copied below for completeness).
  4. This behaviour only happens with the published artifact, when executed with dotnet run it works perfectly.

dotnet myproject.Web.dll output:

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
share|improve this question
  • 1
    Views are precompiled by default in ASP.NET Core 2: docs.microsoft.com/en-us/aspnet/core/mvc/views/… – Kirk Larkin Feb 12 at 12:16
  • I didn't know that. That explains why there is no cshtml files in my publish folder, but then why am I getting the 404 error? The dotnet logs do not show any errors (updated question above with those logs). – joanlofe Feb 12 at 14:37
  • I have a similar issue. In debug mode my app works fine but when in my debug\notecoreapp2.0 folder I run dotnet myproject.dll it cannot find the views. I have to copy them to make this work – sofsntp Mar 23 at 17:45

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
 
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48746130%2fview-folder-not-being-copied-by-dotnet-publish%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged c# razor asp.net-core .net-core or ask your own question.

StackExchange.ready(function(){$.get('/posts/48746130/ivc/af20');});
StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|c#|razor|asp.net-core|.net-core|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.333422 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO