问题标签 [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.
mvvm-light - 与 MVVMLight 一起使用时,Fody.Propertychanged 阻止编辑并继续
我知道使用 AOP 工具可能/应该干扰编辑并继续编织的类。但是我有一个案例,如果项目中有一个从 ObservableObject 继承的类,那么在同一个项目中简单地使用 MVVMLight 和 Fody.PropertyChanged 会阻止编辑和继续。
为了重现,我只是在 VS 2017 Update 3 中创建了一个 WPF 4.6.2 项目(发生在所有更新中),添加对 MVVMLight 和 Fody.PropertyChanged 的 nuget 引用,然后我无法编辑和继续这样的简单代码:
错误是:
CS7038 无法发出模块“WithFodyPropertyChangedAndMvvmLight”。
如果我从 FodyWeavers.xml 文件中删除 PropertyChanged 标记,问题就会消失。如果我不使用 MVVMLight 而只是:
它工作正常。所以它看起来特定于 MVVMLight。
有人见过这个吗?谢谢!
c# - Visual Studio 2017 无法复制 dll,因为 MSBuild.exe 进程正在使用它
我有一个包含 2 个项目的解决方案:一个WPF Applicatin
和一个ClassLibrary
(尝试了标准和框架模板)。WPFApp 引用 ClassLibrary。
问题是:当我尝试构建解决方案时,出现以下错误:
无法将文件“obj\Debug\ClassLibrary.dll”复制到“bin\Debug\ClassLibrary.dll”。该进程无法访问文件“bin\Debug\ClassLibrary.dll”,因为它正被另一个进程使用。
如果我结束 MSBuild.exe 进程,一切正常(直到我更改 ClassLibrary 上的某些内容并尝试构建解决方案)
我尝试了构建前和构建后的事件
taskkill /F /IM MSBuild.exe
但它不起作用,只是出现了一些新错误。我猜这是由于 MSBuild 关闭了它的原因。
您是否知道如何处理该问题,或者至少知道这种 MSBuild 行为的原因是什么?
c# - PropertyChanged 没有按预期工作
我目前正在尝试使用更改的 Fody 属性创建一个带有 MVVM 的 WPF 项目。
基本上,当我单击按钮时,我希望 TextBlock 显示“测试”文本。Click-Command 被执行,但 TextBlock 的文本没有改变。我想使用属性 Text 作为本地内存,使文本块保持最新,以便稍后将值发送到 model.text 并在那里使用它。但它只有在我使用我当前注释掉的代码时才有效。fody weaver 不应该为我做同样的事情吗(只是他创建了另一个私有变量而不是使用 model.text)?
c# - 尝试实施 Fody 加载项时出现投射错误
我正在尝试学习如何编写 Fody 模块,并且正在学习Pluralsight Fody 课程,其中包括一个演练。
示例加载项是向名称以“DTO”结尾的任何类添加接口。他使用了 Fody 源代码中的基本插件,并将 Execute() 方法更改如下...
但是,当我这样做时,我在最后一行代码中得到一个编译器错误......
参数 1:无法从 'Mono.Cecil.TypeDefinition' 转换为 'Mono.Cecil.InterfaceImplementation'
有人知道问题是什么吗?我对这方面的经验不够了解。
c# - 影响 fody 指挥官的构造函数内容
我有一个 WPF 应用程序,它使用 Fody Commander 来简化向视图模型添加命令的过程。
但是我遇到了一个奇怪的问题,如果命令被初始化,传递给我的类的构造函数的值会影响。
在我看来,我有
在我的视图模型的构造函数中,我有以下内容(其中 EditUnit 是带有更改通知的公共属性)
如果创建我的视图,传入一个单元,一切都很好。如果创建我的视图,传入 null,命令似乎不会被初始化并保持为 null。
我为此撕毁了我的头发,现在我刚刚将新对象的创建转移到我创建视图的位置(所以我总是传递和对象,因此命令正常工作)
但我完全不明白为什么会发生这种情况。
fody - 将 Fody 从 2.0.0(示例解决方案)更新到 2.3.1 后,程序集不会使用调试信息构建。
在 Fody 中从 2.0.0 更新到 2.3.1,导致 VS2015 无法使用调试信息构建程序集,这意味着无法设置断点。如果我恢复到 2.0.0,它会使用调试信息构建,并且断点会回来。使用相同的调试构建配置。我也 NuGet PropertyChanged.Fody 但如果我更新 Fody 就会出现这个问题。我对这两种情况都使用了 PropertyChanged.Fody 2.2.0。
dll - 无法从 GAC 加载嵌入式依赖项
我创建了一个 HttpModule,将其添加到 GAC,然后在我的 web.config 中注册它。我使用Fody Costura嵌入依赖项。我的 bin 文件夹中的输出仅包含一个 dll、一个 .config 和一个 .pdb(因为所有依赖项都合并到该文件中。)我的问题是,每当我从 GAC 加载模块时,它都无法找到嵌入依赖项。我有以下观察:
- 每当我的模块从 /bin 文件夹加载时,一切正常。我注册模块如下:
当我从 GAC 加载我的模块时,我的模块无法加载依赖项。我收到以下消息:
无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。
我的模块加载如下:
我在想我的模块不知道依赖关系在它自己内部。有什么方法可以告诉我的模块从合并的 dll 加载依赖项?或者任何可以指出我正确方向的人?我有点迷失在这里。谢谢!
c# - Fody weaving - 我也应该包含来自引用项目的 dll 吗?
我有一个“服务”csproj,它引用了 topshelf(使其成为 Windows 服务)、quartz(用于调度)以及对我的实际代码所在的“核心”csproj 的引用。我使用 costura 将所有 dll 合并为一个最终的 exe。
我的 FodyWeavers.xml 中有 topshelf、quartz 和 core 作为 IncludedAssemblies。最终的 exe 也嵌入了这些。用“dotpeek”检查。但是,当我执行 exe 时,它只是说“服务正在运行,请按 Control+C 退出。”。它没有达到我在核心项目中的实际代码。
在尝试了很多东西之后,我将核心项目引用的 dll 复制到了输出文件夹,然后服务开始运行——执行我的代码并进行数据库更新、写入日志等。
因此,我尝试在 fodyweavers.xml 中提及 nuget 包 dll 和项目引用 dll 的“核心”,但随后出现构建错误,提示“找不到程序集,即使是 copylocal=false”
有人可以提示我正确的方向吗?也许,我错过了一些明显的东西。
c# - 记录属性更改
我的应用程序中有许多模型可以保持简单,如下所示:
我想为每个模型中的每个属性的每个集合添加详细级别的日志记录。喜欢:属性 {Name} {OldValue} -> {NewValue}
正如我所说,有许多模型和许多属性,因此不可能更改每一个。有没有办法在 fody 和属性等方面做到这一点?