Fody及其插件可以与.NET Core(3.0)一起使用吗?



正如标题所说,我无法让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文件中使用"Fody.Costura"和"Fody.PropertyChanged".xml:

<Weavers>
<PropertyChanged />
<Costura />
</Weavers>

这应该不是问题,因为使用 .NET Core 我无论如何都可以创建单个文件应用程序。从FodyWeavers中删除Costura引用.xml解决了我的问题!

它应该可以工作。Fody 与 .NET Standard 兼容。

  • 使用 Visual Studio 2019 中的WPF App (.NET Core)模板或使用dotnet new wpf命令创建新的 WPF 应用
  • 安装FodyPropertyChanged.FodyNuGet 包
  • 将一个名为"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);
}
}

Costura对我来说也不能在带有.NET Core 3.1的wpf中工作。 在 .net core 3.1 中,您可以改用以下内容:

  • 构建 ->发布 ->创建配置文件 -> 编辑"配置">
  • 目标运行时 = win-x64(或您想要的任何目标系统,但不是"可移植的"(
  • 展开"文件发布选项">
  • 检查:生成单个文件

当您现在选择构建 -> 发布 -> 发布按钮时,它将创建单个文件。

似乎是他们停止了costura项目,因为.net核心的"单文件可执行文件"功能。尽管此功能仍然落后于costura,因为您必须设置目标运行时。

https://github.com/Fody/Costura/issues/442

在dotnet core 3中有两个新功能

Single-file executables
Assembly linking

通过 dotnet 工具集中包含的这些功能,值 科斯图拉的命题被大大削弱了。考虑到这一点,我 从长远看,随着人员的过渡,科斯特拉应该停止使用 多。

请发表任何意见。

计划:

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 

.NET 5:
for .NET 5 和当前 Visual Studio 版本 16.10.2 的更新中,向导已更改。尽管我检查了单个文件等的选项,但我无法再让它与向导一起使用。但是使用控制台有效:工具 ->命令行 ->开发人员命令提示符 ->输入以下内容:

dotnet publish -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true

.NET 5 未编译为单个文件可执行文件

最新更新