我尝试发布一个.net核心(WinForms)项目,并将其从核心3.0升级到net5.0,作为单个可执行文件。
我得到以下错误:
NETSDK1142: Including symbols in a single file bundle is not supported when publishing for .NET5 or higher.在搜索NETSDK1142时,我在谷歌上没有得到任何关于修复的结果。
在Core3.0中,以下命令起作用:
dotnet publish nameofproject.csproj \
-o bin/Release/core \
-c Release \
-p:Platform=x64 \
-r win-x64 \
--self-contained true我还尝试了net5.0的以下标志。即使使用DebugSymbols=false,仍然得到相同的错误
dotnet publish nameofproject.csproj \
-o bin/Release/core \
-c Release \
-p:Platform=x64 \
-p:NoWarn=CS0618 \
-p:NoWarn=NU1605 \
--self-contained true \
-p:PublishSingleFile=true \
-p:IncludeAllContentForSelfExtract=true \
-p:PublishReadyToRun=true \
-p:PublishTrimmed=false \
-p:IncludeNativeLibrariesForSelfExtract=true \
/p:DebugType=None /p:DebugSymbols=false发布于 2021-07-21 23:19:52
解决方案
只需将-p:IncludeSymbolsInSingleFile=false或/p:IncludeSymbolsInSingleFile=false添加到发布命令即可
我是怎么找到它的
在尝试修复该问题2天后,在dotnet/sdk源代码中找到了解决方案。
在sdk/src/Tasks/Common/Resources/Strings.resx中,我找到了错误字符串
<data name="CannotIncludeSymbolsInSingleFile" xml:space="preserve">
<value>NETSDK1142: Including symbols in a single file bundle is not supported when publishing for .NET5 or higher.</value>
<comment>{StrBegin="NETSDK1142: "}</comment>
</data>然后,我在源代码中找到了CannotIncludeSymbolsInSingleFile字符串资源,并在sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets中找到了以下结果
<NETSdkError Condition="'$(PublishSingleFile)' == 'true' And
'$(IncludeSymbolsInSingleFile)' == 'true' And
'$(_TargetFrameworkVersionWithoutV)' >= '5.0' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
ResourceName="CannotIncludeSymbolsInSingleFile" />在那里我找到了我必须在build IncludeSymbolsInSingleFile上设置的标志
https://stackoverflow.com/questions/68466834
复制相似问题