首页 > 解决方案 > 将 Windows 帐户名称泄漏到 .Net Core App 配置中

问题描述

我正在尝试使用 .Net Core 构建基于 ac# 的命令行实用程序MyApp 。在为这个实用程序创建一个 msi 安装程序时,我通过一个消除过程计算出,必须包含“ MyApp.runtimeconfig.dev ”文件才能正确安装,从而允许MyApp在另一台 Windows 机器上运行。(并且调试和发布版本都生成并需要相同的文件)

该文件的默认内容为:

{
  "runtimeOptions": {
    "additionalProbingPaths": [
      "C:\\Users\\MyDevAccount\\.dotnet\\store\\|arch|\\|tfm|",
      "C:\\Users\\MyDevAccount\\.nuget\\packages",
      "C:\\Microsoft\\Xamarin\\NuGet",
      "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
    ]
  }
}

令我惊讶的是包含“ C:\Users\MyDevAccount\ ”路径,这是我用来开发“ MyApp ”的Windows机器上的帐户的直接指示。我也怀疑提到Xamarin可能是因为我在安装VS2019的时候安装了Xamarin开发工具。

在我将部署 MyApp 的系统上,这些方面都可能无效。所以我的问题是:

  1. NuGetFallbackFolder 是唯一相关的探测路径吗?

  2. 如何让 VS2019 不包含不相关的路径?

标签: windows.net-corevisual-studio-2019

解决方案


经过大量在线阅读后,我发现了一个有趣的答案,可以解释我所看到的。我的困惑与 .Net Core 和非 .Net Core 项目之间的 Visual Studio 中的“发布”构建的有效变化有关。

从那个答案:

bin/[Configuration] 中的输出仅用于本地开发。该文件与 runtimeconfig.dev.json 一起指定构建输出的依赖关系闭包,并且从本地 NuGet 包缓存中解析引用。如果您将构建输出复制到另一台机器/用户,它将无法正常工作。

虽然我确实发现将所有 Release 文件夹复制到另一台计算机确实有效,但这个答案暗示了为什么“ MyApp.runtimeconfig.dev ”文件首先出现在该文件夹中 - Release 不再是 Release!

“发布” .Net Core 应用程序的正确方法是“发布”它。

当我发布我的 .Net Core 应用程序时,结果输出不再包含“ MyApp.runtimeconfig.dev ”文件,因此基本上使这个问题变得没有意义。


推荐阅读