-1

我将 PropertyChanged.Fody 安装到 WPF 应用程序中。现在使用本机内存的第 3 方代码存在内存分配问题。卸载 PropertyChanged.Fody 可以解决所有这些问题。我认为该包导致属性更改注入到这些程序集中的类中,所以我添加了一个 [程序集:PropertyChanged.FilterType("My.Specific.OptIn.Namespace.")] 我安装 fody 的项目以使注入选择加入. 请注意,我完全按照我刚刚编写的方式保留了过滤器属性,因此没有任何匹配项,只是为了测试。然而仍然有问题。

4

1 回答 1

0

经过几天的调试,我终于找到了问题所在。我的项目设置为 ANYCPU 和 Prefer 32,默认情况下允许它访问更多 RAM。Fody 不尊重这一点,并导致只能访问 2GB RAM 的普通 32 位程序集。

之前(ANYCPU + 首选 32): 在此处输入图像描述

之后(与福迪): 在此处输入图像描述

我的解决方案是使用大地址感知 NuGet 包(包中的目标仅在您将平台目标更改为 x86 时运行,在我的情况下,我从 ANYCPU + Prefer32 更改为简单的 x86)。我将 .csproj 配置为如下所示:

 <PropertyGroup>
   <LargeAddressAware>true</LargeAddressAware>
   <LargeAddressAwareAfterTargets>FodyTarget</LargeAddressAwareAfterTargets>
 </PropertyGroup>

我已经提醒 PropertyChanged.Fody 的贡献者注意这个问题。

于 2020-10-09T15:08:41.203 回答