我有一个Winforms .NET Core 3应用程序,我想将其发布为独立的单文件部署
这是相关的.csproj
文件
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
</PropertyGroup>
<ItemGroup>
<!--PackageReferences-->
</ItemGroup>
<ItemGroup>
<!--ProjectReferences-->
</ItemGroup>
</Project>
我正在使用<RuntimeIdentifier>win-x64</RuntimeIdentifier>
,因此它为Windows x64和<PublishSingleFile>true</PublishSingleFile>
生成了一个自包含部署,因此所有内容都嵌入了.exe
文件中。
通过运行发布时:
dotnet publish -c Release
我在.exe
上获得了.pdb
和bin\Release\netcoreapp3.0\win-x64\publish
文件
- MyApp.exe
- MyApp.pdb
我需要在.csproj
文件中进行哪些更改,以便获取MyApp.dll.config
旁边的MyApp.exe.config
或.exe
,因此该应用实际上从以下位置读取配置:而不是嵌入的App.Config
?
我尝试添加此内容
<ItemGroup>
<Content Update="*.config">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>
此链接Single-file Publish - Build System Interface所暗示,但它仍然只生成两个文件。
答案 0 :(得分:0)
您的问题帮助我为我解决了这个问题,非常感谢。 希望这对您也有用。
我的.csproj看起来像
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PublishReadyToRun>true</PublishReadyToRun>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<Content Include="*.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>
只是使用.config文件做了一些进一步的测试
<ItemGroup>
<None Update="*.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
</ItemGroup>
对我有用,上面有其他配置。