dotnet publish -o ./dist不在msbuild中设置$ OutDir或$ OutPath

时间:2018-01-17 10:23:18

标签: asp.net-core msbuild .net-core

我有一个文件移动事件,我想在发布后触发

<Target Name="CopyEmailTemplates" AfterTargets="AfterPublish">
    <ItemGroup>
      <TemplatesFolder Include="Views\EmailTemplates\*.cshtml" />
    </ItemGroup>
    <Copy SourceFiles="@(TemplatesFolder)" DestinationFolder="$(OutDir)Views\EmailTemplates\" />
</Target>

我已确认该命令未返回包含此目标的发布目录:

<Target Name="OutputTest" AfterTargets="AfterPublish">
    <Exec Command="echo OutPath: $(OutputPath)" />
    <Exec Command="echo OutDir: $(OutDir)" />
</Target>

预期: OutDir设置为dist /

实际行为 OutDir设置为bin / Release / netcoreapp2.0 /

我正在使用: osx.10.12-x64上的.NET命令行工具(2.1.4)

2 个答案:

答案 0 :(得分:2)

发布分为两个步骤。该项目使用常规构建设置构建,然后发布到$(PublishDir)。在需要知道发布输出路径的任何地方使用此属性。

答案 1 :(得分:1)

自我回答希望能够防止人们未来的头痛。

dotnet publish -o ./dist命令将在msbuild中设置$(PublishDir)变量。

dotnet build -o ./dist确实设置了$(OutDir)

为了更明确地使用我们的构建,我现在使用msbuild命令

dotnet publish -o ./dist -c Release

<强>变为:

dotnet msbuild /t:publish /p:PublishDir=dist/ /p:Configuration=Release