防止Visual Studio泄漏已编译的exe中的pdb路径

ymdaylpp  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(283)

当我在Visual Studio中将C#项目构建为发行版时,生成的.exe包含以下字符串:

C:\Users\jornane\source\repos\«solution»\«project»\obj\Release\«name».pdb

.exe文件泄露了我的用户名和我存储项目的路径。有什么方法可以防止这种情况发生吗?我理解为什么该路径将用于调试版本,而不是发布版本。

xtfmy6hx

xtfmy6hx1#

可以使用-pathmap编译器选项来替换存储的PDB路径,例如,以下代码使用存储为.\«name».pdb的PDB路径生成«name».exe,而不是使用完整路径。

C:\Users\«user»\source\repos\«solution»\«project»>csc -debug -pathmap:"%cd%=." «name».cs

-pathmap选项未在IDE中显示,但可以直接设置到.csproj文件中,方法是在文件末尾附近添加以下内容。

<Project>
<!-- ... -->
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
    <!-- after 'Microsoft.CSharp.targets' for 'IntermediateOutputPath' to be defined -->
    <PathMap>$(MSBuildProjectDirectory)\$(IntermediateOutputPath)=.</PathMap>
  </PropertyGroup>
</Project>

<PathMap>替换为<PathMap Condition="'$(Configuration)'=='Release'">,以获得仅应用于发布版本的选项。

  • 注意 *:在上面的例子中,替换路径被设置为".",因为csc不允许它为空(error CS8101: The pathmap option was incorrectly formatted)。任何其他非空的用户定义字符串也可以代替.

相关问题