本文介绍了是否可以从使用 dotnet build 创建的 .NET 程序集中删除完整路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 dotnet build 构建我的项目,目标是 netcoreapp3.1.

I build my project with dotnet build, targeting netcoreapp3.1.

问题在于程序集包含源文件的完整路径:

The problem is that the assemblies contain the full path to the source-files:

/home/runner/my-app/App.fs

这意味着程序集的哈希取决于构建代码的目录.我希望它只依赖于源文件的哈希值和 .NET SDK 本身.

This means that the hash of the assemblies depends on the directory where the code was built. I want it to only depend on the hash of the source-files and the .NET SDK itself.

有没有办法让 dotnet build 使用这样的相对路径?

Is there a way to make dotnet build use relative paths like this?

./my-app/App.fs

推荐答案

您可以使用较少的信息配置发布版本,也可以覆盖 PathMap 值来覆盖它.

You can configure a release build with less information or you can override PathMap value to override it.

<PropertyGroup Label="Override Stack trace file locations">
  <PathMap>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))=./</PathMap>
</PropertyGroup>

项目根目录中的以下 Directory.Build.props 应该可以工作:

The following Directory.Build.props in the root of the project should work:

<Project>
 <PropertyGroup>
    <Deterministic>true</Deterministic>
    <DeterministicSourcePaths>true</DeterministicSourcePaths>
    <PathMap>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))=./</PathMap>
 </PropertyGroup>
</Project>

这篇关于是否可以从使用 dotnet build 创建的 .NET 程序集中删除完整路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 11:40