问题标签 [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 投票
1 回答
651 浏览

c# - Fody 在我的 MVVM WPF 项目中安装后抛出错误

我正在尝试基于 MVVM 项目使用 WPF 构建应用程序。在学习的过程中,我发现必须为每个属性实现 getter/setter 以通知视图更改是很乏味的。那是我了解福迪的时候

我尝试使用以下 2 个命令安装软件包

在这Install-Package PropertyChanged.Fody一步中,我收到以下警告

一个或多个包无法完全卸载:Fody.2.4.1。重新启动 Visual Studio 以完成卸载。

然后在这Update-Package Fody一步中,我收到以下警告

卸载“Fody 2.3.20”。拒绝访问路径“C:\WinProjects\Proj1\packages\Fody.2.3.20\netclassictask\Fody.dll”。拒绝访问路径“C:\WinProjects\Proj1\packages\Fody.2.3.20\netclassictask\FodyCommon.dll”。拒绝访问路径“Fody.dll”。成功卸载“Fody 2.3.20”。一个或多个包无法完全卸载:Fody.2.3.20。重新启动 Visual Studio 以完成卸载。

我尝试以管理员身份运行 Visual Studio,但这也导致我得到相同的结果。

现在,当我构建这个项目时,我收到以下错误

无法从程序集 C:\WinProjects\Proj1\packages\Fody.2.4.1\build..\netclassictask\Fody.dll 加载“Fody.WeavingTask”任务。无法加载文件或程序集“Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。Windows客户端

我怎么解决这个问题?

0 投票
3 回答
360 浏览

c# - 记录结构 - 当必须记录每个方法时如何构建?

我对我们的日志记录看起来多么臃肿有疑问。

我们在这样的结构中记录每个方法:

所以我们要记录:

  • 方法的输入 - 总是

  • 方法的退出 - 总是

  • 额外信息 - 适当时

但是,正如你所看到的,这个将 2 个字符串合并在一起的小逻辑变得非常臃肿。在每一种方法中看到这种膨胀是非常令人沮丧的。

我们已经研究了 Fody 和 Postsharp 等框架中的 Aspects。使用这些框架,我们将能够在所有方法上添加 [LogMethod] 属性,这将自动添加日志记录 OnMethodEntry 和 OnMethodExit。这看起来很有趣,但我们仍然会遇到一些问题。

  1. 我们如何才能在方法对方法的基础上记录我们认为合适的参数?这会有所不同,我们当然不想记录所有输入参数,因为它可能是一个巨大的 xml。我们还希望将这些参数记录在与“OnMethodEntry”日志相同的日志消息中。

  2. 我们仍然需要一个 ILogger 实例作为方法注入。ILogger 的实例化添加了一个会话 ID。这个之前设置的 sessionId 很重要。有没有办法以不同的方式解决 ILogger?如果我们不将 ILogger 发送到构造函数,我们如何能够使用相同的 ILogger 实例在方法内部登录?

0 投票
1 回答
1571 浏览

c# - 如何在另一个项目中使用 MethodDecorator.Fody 装饰器

我使用 Fody Nuget 包如下

  1. 安装包

    /li>
  2. 装饰方法

    /li>
  3. 编写拦截器

    /li>

这在同一个项目中工作正常,但是当我在另一个项目的另一个方法中使用装饰器 [LogMethod] 时, this OnEntry(), OnExit(),OnException(Exception exception)方法不会触发。

例如:

我添加了对定义 [LogMethod] 的项目的引用。

谁能给我一个在其他项目中使用相同实现的方法,而无需在每个项目中执行 LogMethodAttribute.cs(定义此 [LogMethod])。

0 投票
0 回答
5399 浏览

c# - 更改 Fody weavers.xml 位置

VisualStudio 2017,最新的 Fody nuget 包,WinForms,C#

当您安装https://github.com/Fody/FodyFodyWeavers.xml时,它会在项目主目录中自动生成。

如何更改此文件的位置?

我尝试更改项目设置<Content Include="Properties\FodyWeavers.xml" />和 Fody.targets 中的内容 <ProjectWeaverXml>$(ProjectDir)\Properties\FodyWeavers.xml</ProjectWeaverXml>

但是在编译时我仍然收到以下错误:

错误 Fody:找不到 weavers 文件的路径。搜索“C:\Users\Thomas\Desktop\projects\FodyWeavers.xml”、“C:\Users\Thomas\Desktop\projects\fodytest\FodyWeavers.xml”。

0 投票
3 回答
5664 浏览

xamarin - Fody.WeavingTask 和 SolutionDir 的 Xamarin 问题

我一直在尝试在我的 Xamarin android proyect 中使用 Realm,它的依赖项之一是 Fody,每次我尝试运行我的应用程序时,它都会显示以下错误:错误 MSB4044:“Fody.WeavingTask”任务没有为所需的参数“SolutionDir”。

我一直在寻找修复程序,但找不到,你知道如何给它一个值吗?它在哪里?

对于领域块包,我已经创建了 FodyWeavers.xml

0 投票
1 回答
534 浏览

c# - 使用 Fody 将 dll 嵌入到带有 Mono 支持的 exe 中

好吧,我的问题几乎类似于在已编译的可执行文件中嵌入 DLL,这里提供的非常好的答案失去了与单声道运行时的兼容性,尽管它适用于 Windows。

那么我如何使用Fody( Costura) 并保持单声道兼容性。他们在https://github.com/Fody/Costura#contents的文档如下:

CosturaUtility 是一个类,可让您在自己的代码中手动初始化 Costura 系统。这主要是针对模块初始化器不起作用的场景,例如库和 Mono。

要使用,请尽早在代码中的某处调用 CosturaUtility.Initialize()。

但即使在ConturaUtility手动初始化之后,它也不支持单声道运行时。

我不认为错误日志是相关的,但它是:

0 投票
0 回答
681 浏览

c# - 由于使用 Costura.Fody 的嵌入式组装而处理 deps.json

我有一个引用 .NET Standard 程序集的 .NET Core 控制台应用程序。
我还为 Costura.Fody 和 FodyWeavers.xml 文件添加了 NuGet 包(见下文)。

这构建得很好,一切看起来都很好,但是当我尝试运行我的应用程序 ( dotnet "MyApp.exe") 时,它抱怨它找不到我在 MyApp.deps.json 文件中提到的嵌入程序集的文件。

错误信息是:

未找到应用程序依赖项清单 (MyApp.deps.json) 中指定的程序集:
包:'My.Assembly',版本:'1.0.0.0'
路径:'My.Assembly.dll'

这是有道理的,如果我手动从该文件中删除提及,则运行该应用程序可以正常工作,但我的问题是:有没有办法告诉 Visual Studio 或 Costura 从我的 deps.json 文件中删除该程序集的提及,以便我不要每次构建后都不需要编辑它?虽然我可以在后期构建期间使用一个工具来编辑它,但我更喜欢内置的方式。我没有在 Fody github 页面上看到任何文档...

FodyWeavers.xml 供参考:

0 投票
1 回答
65 浏览

catel - 使用 Fody 自动绑定到 Catel 中的某些服务属性

假设有一些服务:

其目的是监控外部环境(USB、网络等),在检测到设备时实例化设备 API,并null在设备不再可用时创建属性。

假设有一个注入了此服务的视图模型,我希望更改通知IDeviceManagerService.Api以使下面的事情成为可能(例如,只有在设备 API 可用时才激活按钮)。

我想知道是否有一种干净的方法可以使这项工作无需手动更改通知处理(使用 Catel.Fody 或 PropertyChanged.Fody)。到目前为止,我已经设法通过使服务实现派生自ModelBase、将其注入的实例注册为视图模型内部并使用属性[Model]公开它的属性来获得工作结果,但这是非常肮脏的方式。Api[ViewModelToModel]

是否有一些常见的方法或者最好实现 INotifyPropertyChanged 并使用通知包装器来代替?

0 投票
1 回答
1197 浏览

c# - Fody NuGet 包如何在编译过程结束时合并程序集?

最近我遇到了一个用于修改 .NET 程序集的 NuGet 包,特别是,有一个用于 Fody 包的 Costura NuGet“插件”,它在 C# 编译器完成后合并程序集。

我找不到对 .csproj 文件的任何修改(除了 NuGet 导入),它显示了在构建程序集后执行的任务。

我想知道 Fody 如何能够在构建后运行代码而无需在任何地方进行任何明显的配置更改。

0 投票
1 回答
1788 浏览

c# - C# Costura.Fody - 资源未嵌入

几年前,我使用了 Costura.Fody,它在通过 NuGet 安装后完美运行。昨天我在家里试了一下,首先得到了错误,即 Fody 丢失(我刚刚通过 NuGet 安装了 Fody)。然后我错过了 FodyWeavers.xml,这是我在另一篇文章中提到的那样创建的。之后它对我来说很好,我只需要开始调试,dll就会包含在exe中。今天我想在工作中做同样的事情,所以我安装了 Costura.Fody,但这次也安装了 Fody。结果我得到了两个错误:

第一:找不到名为“PropertyChanged”的织布工

第二:FodyWeavers.xml 缺失

我安装了 PropertyChanged.Fody 并创建了 FodyWeavers 文件。现在我可以运行我的应用程序,但没有嵌入 dll。

几年前我用过Win7 + VS Community 15

主场:赢 10 + VS 15

工作中:Win7 + VS Community 15

请帮忙 :(

编辑

我尝试了很多方法,但我无法让它发挥作用。我设法找到了一篇博文,让我在没有第三方库的情况下将 dll 嵌入到 exe 中。我强烈建议使用它而不是 Costura,因为似乎网上有几个人现在对这个库有问题

链接到我的 <3 http://adamthetech.com/2011/06/embed-dll-files-within-an-exe-c-sharp-winforms/

此致!