问题标签 [fody]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
726 浏览

c# - 在没有 Nuget 的情况下安装 Costura Fody

我希望能够拥有 Costura Fody 的功能(将本机程序集合并到我的可执行文件中),但我不想使用 Nuget 的“Install-Package Costura.Fody”。我怎样才能做到这一点?我理想的解决方案是能够只包含https://github.com/Fody/Costura/tree/master/src上的一些源代码,但我对内部工作原理的了解不足以知道哪些文件可以做到这一点可能我也不知道是否需要进一步的步骤来“安装”这个包。

0 投票
0 回答
261 浏览

c# - 如何在现有属性的基础上引入新属性并修改现有属性?

我正在尝试自动化此 XmlSerializer 解决方法模式请参阅下面的更新。

是否可以基于现有属性引入新属性并使用 PostSharp(或其他 AOP 工具)修改现有属性的属性?

最好在构建时进行此修改。

示例源属性:

期望的结果(省略类声明):

我找到了关于介绍成员的 PostSharp 教程,但没有关于 (a) 如何介绍具有动态名称的成员和 (b) 如何将属性([XmlAttribute]在我的情况下)从现有成员移动到新创建的成员的信息。

我不需要一个确切的解决方案 - 只需一些提示就足够了。


更新:通过进一步的研究,我可以得出 PostSharp 不支持动态方法命名的结论。PostSharpIt 也不能​​从现有方法中删除属性。

所以让我用另一种方法来解决这个问题:

1) 注入 10 个名为IntroducedProperty0, IntroducedProperty1, ... 的新属性,这似乎是微不足道的。属性是硬编码的。

2) 以某种方式在 (1) 之后/使用 (1) 将属性添加[XmlAttribute("nameOftheOriginalProperty#N")]IntroducedPropertyN其中 N=0..9 且 M<=N的第一个 M。这是一种动态。这在向现有(未注入)成员添加属性时是可能的。但是他们说您不能向注入的成员添加属性。其余注入的方法(从 M 到 N)应标记为 [XmlIgnore]。

3) 用 [XmlIgnore] 标记类的原始方法。

也许这可以通过 Fody 实现?

0 投票
2 回答
8186 浏览

c# - 使用 Fody 时出错 [ImplementPropertyChanged]

我正在使用 VS 2017 社区版我正在创建 MVVM 模式。安装 fody 后,我的代码出现错误,而本教程的讲师在 vs 2015 上实现了它,代码如下:

[ImplementPropertyChanged] 在这一点上不应该出错,教师成功地实施了它,所以我的代码中是否缺少任何东西?错误说:

严重性代码描述项目文件行抑制状态错误 CS0619“ImplementPropertyChangedAttribute”已过时:“此配置选项已被弃用。此属性的用途是将 INotifyPropertyChanged 添加到具有关联事件定义的类中。之后,所有实现 INotifyPropertyChanged 的​​类都编织了它们的属性,不管它们是否具有 ImplementPropertyChangedAttribute。此属性通常被错误地解释为选择加入属性编织的方法,这既不是意图,也不是它的操作方式。此属性已替换为 AddINotifyPropertyChangedInterfaceAttribute。' GProject_MVVM c:\users\ahmed hussainy\documents\visual studio 2017\Projects\GProject_MVVM\GProject_MVVM\ViewModel\BaseViewModel。

0 投票
1 回答
252 浏览

c# - WPF MVVM OnPropertyChanged 已定义但未在其他视图模型上显示

伙计们。我正在实现一个 MVVM 代码。我正在使用福迪。我成功创建了BaseViewModel,它是这样的:

没问题,但是当我在WindowViewModel上调用它时,我收到一个错误,即OnPropertyChanged Not Defined here is my WindowViewModel

0 投票
1 回答
373 浏览

c# - 从数据库获取实体时如何不触发 PropertyChanged?

我有 WPF 应用程序,我在其中使用一些基本类。我还使用Fody PropertyChanged和 EF 6.1.3。每当更改任何属性时,我都会尝试更改属性 SaveNeeded。所以我写了这个类:

当我创建新的 Foo 然后更改一些属性时,它会像我想的那样工作。但是当我尝试使用 EF 从数据库中获取 Foo 时,会触发 PropertyChanged 事件。有什么建议如何从数据库中获取 Foo 而不是触发 PropertyChanged?

谢谢你!!

0 投票
1 回答
487 浏览

fody - 未找到 Costura.Fody 嵌入式库命名空间

我正在使用 Costura.Fody 将我的项目中的一堆引用嵌入到一种主库中,以消除在我的 API 中引用每个库的需要。Costura.Fody 输出显示我的库的其他部分正在嵌入,但是当我引用 DLL 时,嵌入的命名空间没有显示,因此不会构建依赖项目。

在文本编辑器中打开 DLL 显示嵌入的命名空间DLL 中,但在 Visual Studio 中无法检测到...

我正在使用默认的 Costura.Fody weavers 设置。有什么建议吗?请?

0 投票
1 回答
54 浏览

fody - 使用 Fody 访问通用基类中的字段问题

考虑以下测试代码结构:

当我添加Instruction.Create(OpCodes.Ldfld, TestObjectField)到 时TestMethod,我得到以下结果:

ldfld class Object TestNamespace.TestClass`1::TestObject

这会导致 Dynamics CRM 的安全插件系统出现问题(可以在此处找到更多信息)。但是,当我添加TestObject = new object()到时TestMethod,我得到以下运行良好的结果:

ldfld class Object class TestNamespace.TestClass`1<!T>::TestObject

这只发生在我尝试访问的对象位于通用基类中时。请问有没有一种方法可以在 Fody 中模拟所需的结果?

更新:

我设法通过使用以下几行部分解决了这个问题:

似乎默认情况下 ModuleDefinition 不提供通用类型/字段定义;所以它必须明确地完成。另外,没有指定泛型参数的类型,所以还是个问题。

0 投票
2 回答
87 浏览

c# - 需要解决方法来限制 Facebook Flux 的 .NET 实现的虚拟、抽象静态成员

我查看了 .NET 中的许多 Flux 实现,并认为这种方法非常好:

  • 它使用静态成员而不是枚举,使 XAML 更好
  • 无需转换为枚举类型/从枚举类型转换(更简洁的代码)
  • 与几乎所有发布/订阅机制轻松集成。

话虽如此,我想保留静态属性到字符串的编码技术,但我无法进行以下工作:

问题

  • 语言中有什么允许这样做的吗?
  • 是否有任何我可以做的预编译脚本允许这样做?
  • 是否有任何我可以使用的 Fody 插件可以提供帮助(我没有看到)
0 投票
1 回答
91 浏览

cil - 合并表达式导致 Fody 中的返回语句出现问题

考虑以下代码片段:

它被编译为以下 IL 代码:

如果我在 Fody 中应用“修复退货”,我会得到以下 IL 代码:

在 ILSpy 中反编译时,它给了我以下错误,并且无法运行:

我跟踪了堆栈大小,它似乎成立。知道什么可能导致这个问题吗?

更新1:

我为这个问题添加了一个临时快速修复:

到目前为止,它在一个体面的程序中工作。我会继续关注它,如果有任何变化,我会更新。如果我能在“return fixer”中找到问题的根源会更好。

0 投票
1 回答
344 浏览

xamarin.android - Mobile Center 是 Xamarin 构建失败并出现 pthread_mutex_lock 错误

我正在使用 Visual Studio App Center 将 Xamarin.Forms 应用程序构建到 Xamarin.Android 中。该应用程序在我的机器上的开发和发布配置中构建良好,但是当我尝试在 Mobile Center 上构建时,构建几乎完成(即 MSBuild 阶段),但随后出现此致命错误: