在我的情况下,这是由于以下原因发生在一个net7.0项目中:
我的最终目标是将我的应用程序发布为一个自包含的单个文件。我阅读了微软的.NET CLI文档,并在"MSBuild属性"部分中找到了以下内容:
发布单个文件
将应用程序打包为特定于平台的单个文件可执行文件。有关单文件发布的更多信息,请参阅单文件捆绑器设计文档。
我们建议您在项目文件中指定此选项,而不是在命令行中指定。
而且,要获得单个文件的结果,您必须定义一个RuntimeIdentifier。
所以...根据这一切,我在我的csproj中添加了以下内容:
<PropertyGroup>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
通过添加
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
,构建输出结果从"bin{Configuration}{TargetFramework}"变为"bin{Configuration}{TargetFramework}{RuntimeIdentifier}",例如:
在添加<RuntimeIdentifier>win-x64</RuntimeIdentifier>
之前,输出从bin\debug\net7.0
变为bin\debug\net7.0\win-x64
在进行这些csproj更改之后,如果我继续修改源代码并尝试调试,我会收到警告"断点警告:源代码与原始版本不同"。
通过清理所有二进制文件并重新构建项目,我最终得到了一个解释:
最后,不要忘记修改launch.json / configurations / program中的内容:
"${workspaceFolder}/bin/Debug/net7.0/MyProject.dll"
改为
"${workspaceFolder}/bin/Debug/net7.0/
win-x64/MyProject.dll"
。
所以,在我看来,dotnet publish配置应该只与发布操作(命令)相关,而不应影响项目本身。
--
感谢您的阅读。