正如标题所说,我无法让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 应用 - 安装
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);
}
}
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 未编译为单个文件可执行文件