C# Asp.net core 2-未发布文件

C# Asp.net core 2-未发布文件,c#,asp.net-core,csproj,C#,Asp.net Core,Csproj,编辑 关于信息,我正在使用VS代码开发macOS 我试图在我的发布过程中包含文件(目前表示我的电子邮件模板的cshtml) 我在github上关注这一点,但他们的解决方案似乎不适合我 在这里,我的csproj添加了一个独特的cshtml文件: <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish"> <ItemGroup> <EmailFile Include="$(

编辑

关于信息,我正在使用VS代码开发macOS

我试图在我的发布过程中包含文件(目前表示我的电子邮件模板的
cshtml

我在github上关注这一点,但他们的解决方案似乎不适合我

在这里,我的csproj添加了一个独特的
cshtml
文件:

  <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <ItemGroup>
      <EmailFile Include="$(ProjectDir)/EmailTemplates/OrderCompleteEmail.cshtml" />
    </ItemGroup>
    <Copy SourceFiles="@(EmailFile)" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="false" />
  </Target>

您的解决方案几乎是正确的,您必须使用
postertargets=“Publish”


您还可以将单个目标中的所有电子邮件模板复制到同一文件夹,如:

  <Target Name="CopyCustomContentOnPublish" AfterTargets="Publish">
    <ItemGroup>
      <EmailTemplates Include="EmailTemplates\*.cshtml" />
    </ItemGroup>
    <Copy SourceFiles="@(EmailTemplates)" DestinationFolder="$(PublishDir)%(EmailTemplates.RelativeDir)" />
  </Target>


查找msbuild信息。EmailFile不是msbuild中的默认变量/属性。检查此问题链接您是否尝试将文件复制到输出文件夹?右键单击->属性->构建操作=无,复制到输出目录=复制(如果更新)。当我使用文本文件尝试此操作时,它会与其他所有内容一起发布。为什么不使用属性?@Set我已经尝试了CopyTopPublishDirectory,但没有成功。@bradbury ok。考虑到我们可以创建节点^^^是的,我以前就是这样做的^^不错的解决方案,不过要小心,在dotnet publish和VS 2017(15.8.4)publish之间存在一种奇怪的分歧-VS不会与
PostTargets=“AfterPublish”
一起工作,但会与
PostTargets=“publish”
一起工作。后者同时适用于-VS和dotnet publish。感谢您对@TheBerser的评论,我根据它更新了我的答案。显然,您也可以使用globs和
方法
  <Target Name="CopyCustomContentOnPublish" AfterTargets="Publish">
    <ItemGroup>
      <EmailTemplates Include="EmailTemplates\*.cshtml" />
    </ItemGroup>
    <Copy SourceFiles="@(EmailTemplates)" DestinationFolder="$(PublishDir)%(EmailTemplates.RelativeDir)" />
  </Target>