Fody 及其插件可以与 .NET Core (3.0) 一起使用吗?
Can Fody and its plugins be used with .NET Core (3.0)?
如标题所述,我无法 Fody, and the plugin 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 引用解决了我的问题!
应该可以。 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 也不能在 wpf 和 .net core 3.1 中工作。
在 .net core 3.1 中,您可以改用它:
- 构建 -> 发布 -> 创建配置文件 -> 编辑“配置”
- 目标运行时 = win-x64(或任何你想要的目标系统,但不是“可移植的”)
- 展开“文件发布选项”
- 检查:生成单个文件
- 保存
当您现在选择构建 -> 发布 -> 发布按钮时,它将创建单个文件。
他们似乎是因为 .net core 的“单文件可执行文件”特性而停止了 costura 项目。尽管此功能仍落后于 costura,因为您必须设置目标运行时。
https://github.com/Fody/Costura/issues/442
In dotnet core 3 there are two new features
Single-file executables
Assembly linking
With these features included in the dotnet tool set, the value
proposition of Costura is greatly diminished. With that in mind I
think long term Costura should cease to be used as people transition
over.
Please comment with any input.
Plan:
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 更新:
对于 .NET 5 和当前 visual studio 版本 16.10.2,向导已更改。尽管我检查了单个文件等的选项,但我无法让它与向导一起工作。但是使用控制台工作:工具 - >命令行 - >开发人员命令提示符 - >输入:
dotnet publish -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true
如标题所述,我无法 Fody, and the plugin 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 引用解决了我的问题!
应该可以。 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 也不能在 wpf 和 .net core 3.1 中工作。 在 .net core 3.1 中,您可以改用它:
- 构建 -> 发布 -> 创建配置文件 -> 编辑“配置”
- 目标运行时 = win-x64(或任何你想要的目标系统,但不是“可移植的”)
- 展开“文件发布选项”
- 检查:生成单个文件
- 保存
当您现在选择构建 -> 发布 -> 发布按钮时,它将创建单个文件。
他们似乎是因为 .net core 的“单文件可执行文件”特性而停止了 costura 项目。尽管此功能仍落后于 costura,因为您必须设置目标运行时。
https://github.com/Fody/Costura/issues/442
In dotnet core 3 there are two new features
Single-file executables Assembly linking
With these features included in the dotnet tool set, the value proposition of Costura is greatly diminished. With that in mind I think long term Costura should cease to be used as people transition over.
Please comment with any input.
Plan:
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 更新:
对于 .NET 5 和当前 visual studio 版本 16.10.2,向导已更改。尽管我检查了单个文件等的选项,但我无法让它与向导一起工作。但是使用控制台工作:工具 - >命令行 - >开发人员命令提示符 - >输入:
dotnet publish -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true