对于面向.NET Core 1.0的控制台应用程序项目,我无法弄清楚如何在构建期间输出.exe . 项目在调试中运行良好 .
我已经尝试发布该项目,但这也不起作用 . 有道理,因为.exe将是特定于平台的,但必须有一种方法 . 我的搜索只引用了使用project.json的旧版.Net Core版本 .
无论何时我 Build 或发布,这都是我得到的 .
出于调试目的,您可以使用dll . 您可以使用 dotnet ConsoleApp2.dll 运行它 . 如果要生成exe,则必须生成自包含的应用程序 .
dotnet ConsoleApp2.dll
要生成自包含的应用程序(在Windows中为exe),您必须指定目标运行时(您定位的OS) .
仅限Pre-.NET Core 2.0:首先,在csproj(list of supported rid)中添加目标运行时的运行时标识符:
<PropertyGroup> <RuntimeIdentifiers>win10-x64;ubuntu.16.10-x64</RuntimeIdentifiers> </PropertyGroup>
从.NET Core 2.0开始不再需要上述步骤 .
然后,在发布应用程序时设置所需的运行时:
dotnet publish -c Release -r win10-x64 dotnet publish -c Release -r ubuntu.16.10-x64
以下将在输出目录中生成
所有包引用
输出组件
bootstrapping exe
但不包含所有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>
我把它包裹在这里的样本https://github.com/SimonCropp/NetCoreConsole
2 回答
出于调试目的,您可以使用dll . 您可以使用
dotnet ConsoleApp2.dll
运行它 . 如果要生成exe,则必须生成自包含的应用程序 .要生成自包含的应用程序(在Windows中为exe),您必须指定目标运行时(您定位的OS) .
仅限Pre-.NET Core 2.0:首先,在csproj(list of supported rid)中添加目标运行时的运行时标识符:
从.NET Core 2.0开始不再需要上述步骤 .
然后,在发布应用程序时设置所需的运行时:
以下将在输出目录中生成
所有包引用
输出组件
bootstrapping exe
但不包含所有netcore运行时程序集
我把它包裹在这里的样本https://github.com/SimonCropp/NetCoreConsole