windows - 将 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 的系统上,这些方面都可能无效。所以我的问题是:
NuGetFallbackFolder 是唯一相关的探测路径吗?
如何让 VS2019 不包含不相关的路径?
解决方案
经过大量在线阅读后,我发现了一个有趣的答案,可以解释我所看到的。我的困惑与 .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 ”文件,因此基本上使这个问题变得没有意义。
推荐阅读
- java - 如何使用while循环循环遍历哈希图中的每个项目
- c# - 您可以像在 Javascript 中一样在 C# 中创建对象列表吗?
- json - 创建具有特定文本格式的 pd.DataFrame
- python - 如何使用熊猫中的for循环根据另一列的条件填写一列中的缺失值?
- r - 使用 R 计算镜头图的每个 bin 中的平均点
- acumatica - 使用 Javascript 与隐藏字段和操作交互
- c - 为什么将 free 的返回值转换为 void?
- qt - CMake 抱怨找不到 autouic 文件
- reactjs - 在 React Native 应用程序中使用多个 DatePicker
- macros - (Chez) 隐藏 lambda 的 Scheme 宏