Open aalmada opened 7 years ago
If I install only the ReactiveUI.Fody 2.0.65 package, NuGet states that will install Fody 1.13.0. The project compiles but, when I execute, it crashes because of a missing method. If I also install the Fody 1.29.4 package, NuGet states that it will upgrade Fody. When I compile, I get the error.
Hi, sorry for not getting back to you sooner. I'll take a look at it this weekend.
Looks like Fody doesn't support .NET Standard: https://github.com/Fody/Fody/issues/280
I'm running into this issue now trying to upgrade my projects to .NET Standard. The aforementioned issue has been closed, so Fody now supports .NET Standard. Any update on this?
PropertyChanged.Fody now works on .NET Standard but ReactiveUI.Fody not. https://github.com/Fody/Fody/issues/280
I managed to get it working with netstandard 1.6 as Solution Weavers project (local):
You need to replace in ObservableAsPropertyWeaver.cs
var exceptionType = ModuleDefinition.ImportReference(typeof(Exception));
var exceptionConstructor = ModuleDefinition.ImportReference(exceptionType.Resolve().GetConstructors().Single(x => x.Parameters.Count == 1));
to this
var systemRuntimeName = ModuleDefinition.AssemblyReferences.Where(x => x.Name == "System.Runtime").FirstOrDefault();
var systemRuntime = ModuleDefinition.AssemblyResolver.Resolve(systemRuntimeName);
var exceptionDefinition = systemRuntime.MainModule.Types.First(x => x.Name == "Exception");
var constructorDefinition = exceptionDefinition.GetConstructors().Single(x => x.Parameters.Count == 1);
var exceptionConstructor = ModuleDefinition.ImportReference(constructorDefinition);
Thanks for looking into it, @RostislavST, I'll get to it this weekend.
I see @RostislavST put up a NuGet package for netstandard 1.6. Unfortunately, I can't use it since I have to support UWP. Any chance of getting an official package soon, @kswoll?
UWP not supporting NET standard 1.6? https://blogs.msdn.microsoft.com/dotnet/2017/10/10/announcing-uwp-support-for-net-standard-2-0/
No. Not until Oct 17th. Even then, it won't be backward compatible. UWP currently only supports netstandard 1.4. From the article:
You also need to be running on and targeting Windows 10 Fall Creators Update, which will be released later this month.
I've already gone through the hassle of forking your repo, changing the namespace back to what it was so I don't have to refactor everything, targeting netstandard 1.4, and building a new package. Thanks anyway for the fix.
I'm using Fody for the first time and I'm getting an unhandled exception. It's a netstandard 1.1 library project. I added both Fody and ReactiveUI.Fody packages and then added the FodyWeavers.xml by hand. The view model has two constructors (one without parameters and another with a parameter). It has two ObservableAsProperty but exceptions still happens when I remove them.
1> Fody: Fody (version 1.29.4.0) Executing 1> Fody/ReactiveUI: ReactiveUI 7.0.0.0 1> Fody/ReactiveUI: ReactiveUI.Fody.Helpers 2.0.65.0 1> Fody/ReactiveUI: ReactiveUI 7.0.0.0 1> Fody/ReactiveUI: ReactiveUI.Fody.Helpers 2.0.65.0 1>MSBUILD : error : Fody: An unhandled exception occurred: 1>MSBUILD : error : Exception: 1>MSBUILD : error : Value cannot be null. 1>MSBUILD : error : Parameter name: self 1>MSBUILD : error : StackTrace: 1>MSBUILD : error : at Mono.Cecil.Rocks.TypeDefinitionRocks.GetConstructors(TypeDefinition self) 1>MSBUILD : error : at ReactiveUI.Fody.ObservableAsPropertyWeaver.Execute() in C:\projects\reactiveui-fody\ReactiveUI.Fody\ObservableAsPropertyWeaver.cs:line 41 1>MSBUILD : error : at ReactiveUI.Fody.ModuleWeaver.Execute() in C:\projects\reactiveui-fody\ReactiveUI.Fody\ModuleWeaver.cs:line 31 1>MSBUILD : error : at lambda_method(Closure , Object ) 1>MSBUILD : error : at InnerWeaver.ExecuteWeavers() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 161 1>MSBUILD : error : at InnerWeaver.Execute() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 82 1>MSBUILD : error : Source: 1>MSBUILD : error : Mono.Cecil.Rocks 1>MSBUILD : error : TargetSite: 1>MSBUILD : error : System.Collections.Generic.IEnumerable`1[Mono.Cecil.MethodDefinition] GetConstructors(Mono.Cecil.TypeDefinition) 1>MSBUILD : error : 1> Fody: Finished Fody 22ms.