aja*_*987 63 .net-core visual-studio-2017
我在Visual Studio 2017中创建了一个NetCoreApp(v1.1).当我编译它时,我得到一个DLL,而不是生成的项目的预期EXE.我确实检查了csproj文件并确认输出类型设置为exe,但没有骰子.
任何想法为什么VS2017仍在生成DLL?我确定它在某个地方快速设置,我忘记了...它也是凌晨1点.:)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Core.EF.SqlServer\Core.EF.SqlServer.csproj" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
Mar*_*ich 90
.NET Core应用程序应该是.dll文件.在这种情况下--self-contained设置为true"可执行"并执行所有必要的操作以确保输出可运行(.dll方法,OutputType文件的入口点).生成的dll文件应使用以下命令运行:
dotnet publish -r win-x64 -p:PublishSingleFile=True --self-contained false
Run Code Online (Sandbox Code Playgroud)
此dll文件适用于.net核心运行时(windows,linux,macOS)支持的所有平台.这称为"可移植"或"依赖于框架"部署.
如果您真的想要一个Exe文件,请考虑自包含部署.这将创建一个包含其自己的.net核心运行时副本和Main()文件的输出 - 但它也会增加已发布应用程序的大小,并且需要在发布新版本的运行时时更新它.此外,生成的应用程序仅适用于发布的操作系统.
有关部署选项以及如何设置它们的更多详细信息,请参阅.NET Core应用程序部署.
R.T*_*tov 54
在VS2017
在文件夹\ bin\Debug \netcoreapp2.1\win-x86 \中,您将看到EXE文件
尽管构建自包含部署可能是一个很好的解决方案,但它也有其自身的缺点。(请参阅R.Titov和Martin Ullrichs关于SCD-s的回答。)
幸运的是,.NET Core 2.2支持所谓的框架相关可执行文件 -s 的构建,该文件本质上是标准dll-s 的包装二进制文件(Windows 上为.exe)。
这样,您就拥有了标准框架依赖部署的所有优点(和缺点)(再次参见Martin的回答),但是您有一种方便的启动方式,而不必通过dotnet CLI 调用它。
您可以使用以下语法将应用程序发布为依赖于框架的可执行文件:
dotnet publish -c Release -r <RID> --self-contained false
Run Code Online (Sandbox Code Playgroud)
RID是通常的运行时标识,例如,win-x64或您希望构建的任何平台(请参见此处的目录)。
| 归档时间: |
|
| 查看次数: |
24176 次 |
| 最近记录: |