正如标题所述,我在使Fody和插件Fody.PropertyChanged在.NET Core 3.0或任何.NET Core版本中运行时遇到困难。在相应的GitHub页面上阅读问题并不能回答我的问题,也无法找到任何相关的答案。
安装后,我将无法再运行WPF项目,并且出现以下错误:
The target process exited without raising a CoreCLR started event.
Ensure that the target process is configured to use .NET Core.
This may be expected if the target process did not run on .NET Core.
The program '[21820] CalculationToolsApp.exe' has exited with code -2147450749 (0x80008083).
有什么建议吗?
编辑:我发现在FodyWeavers.xml文件中,我(也许)不能将“ Fody.Costura”与“ Fody.PropertyChanged”一起使用:
<Weavers>
<PropertyChanged />
<Costura />
</Weavers>
这应该不是问题,因为使用.NET Core,我仍然可以创建单个文件应用程序。从FodyWeavers.xml中删除Costura参考可以解决我的问题!
答案 0 :(得分:2)
应该可以。 Fody与.NET Standard兼容。
WPF App (.NET Core)
模板或使用dotnet new wpf
命令创建新的WPF应用程序Fody
和PropertyChanged.Fody
NuGet软件包将名称为“ FodyWeavers.xml”的文件添加到项目中:
<Weavers>
<PropertyChanged />
</Weavers>
如果您随后使用诸如dotPeek之类的反编译器对程序集进行反编译,则应该看到预期的注入代码,例如:
public string GivenNames
{
// Method get_GivenNames with token 06000009
get
{
return this.<GivenNames>k__BackingField;
}
// Method set_GivenNames with token 0600000A
set
{
if (string.Equals(this.<GivenNames>k__BackingField, value, StringComparison.Ordinal))
return;
this.<GivenNames>k__BackingField = value;
this.<>OnPropertyChanged(<>PropertyChangedEventArgs.FullName);
this.<>OnPropertyChanged(<>PropertyChangedEventArgs.GivenNames);
}
}
答案 1 :(得分:0)
对于我来说,Costura也无法在带有.net core 3.1的wpf中工作。 在.net core 3.1中,您可以改用以下方法:
当您现在选择build-> publish-> publish按钮时,它将创建单个文件。
由于.net core的“单个文件可执行文件”功能,似乎他们停止了costura项目。尽管此功能仍然落后于costura,因为您必须设置目标运行时。
https://github.com/Fody/Costura/issues/442
在dotnet core 3中,有两个新功能
Single-file executables Assembly linking
在dotnet工具集中包含这些功能后, Costura的提议大大减少了。考虑到我 认为长期的Costura应该在人们过渡时停止使用 结束。
请输入任何评论。
计划:
disable issues PR will still be accepted but only for bug fixes add note to readme add note to nuget description write a warning in