对于面向.NET Core 1.0的控制台应用程序项目,我无法弄清楚如何在构建期间输出.exe.项目在调试中运行良好.
我已经尝试发布该项目,但这也不起作用.有道理,因为.exe将是特定于平台的,但必须有一种方法.我的搜索只引用了使用project.json的旧版.Net Core版本.
无论何时我建立或发布,这都是我得到的.
mez*_*tou 441
出于调试目的,您可以使用dll.你可以使用它来运行它dotnet ConsoleApp2.dll.如果要生成exe,则必须生成自包含的应用程序.
要生成自包含的应用程序(在Windows中为exe),您必须指定目标运行时(您定位的OS).
仅限Pre-.NET Core 2.0:首先,在csproj(支持的rid列表)中添加目标运行时的运行时标识符:
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;ubuntu.16.10-x64</RuntimeIdentifiers>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
从.NET Core 2.0开始不再需要上述步骤.
然后,在发布应用程序时设置所需的运行时:
dotnet publish -c Release -r win10-x64
dotnet publish -c Release -r ubuntu.16.10-x64
Run Code Online (Sandbox Code Playgroud)
Fra*_*hes 83
UPDATE(31-OCT-2019) 对于任何想要通过GUI和执行以下操作的人:
注意
您可以添加“ PublishTrimmed”属性。该应用程序将仅包括该应用程序使用的组件。注意:如果您使用反射,请不要这样做
重新发布
上一篇
对于正在使用Visual Studio并希望通过GUI进行操作的任何人,请参见以下步骤:
Sim*_*mon 16
以下将在输出目录中生成
但不包含所有netcore运行时程序集
<PropertyGroup>
<Temp>$(SolutionDir)\packaging\</Temp>
</PropertyGroup>
<ItemGroup>
<BootStrapFiles Include="$(Temp)hostpolicy.dll;$(Temp)$(ProjectName).exe;$(Temp)hostfxr.dll;"/>
</ItemGroup>
<Target Name="GenerateNetcoreExe"
AfterTargets="Build"
Condition="'$(IsNestedBuild)' != 'true'">
<RemoveDir Directories="$(Temp)" />
<Exec
ConsoleToMSBuild="true"
Command="dotnet build $(ProjectPath) -r win-x64 /p:CopyLocalLockFileAssemblies=false;IsNestedBuild=true --output $(Temp)" >
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
<Copy
SourceFiles="@(BootStrapFiles)"
DestinationFolder="$(OutputPath)"
/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我把它包装在这里的样本https://github.com/SimonCropp/NetCoreConsole
| 归档时间: |
|
| 查看次数: |
161813 次 |
| 最近记录: |