-
Notifications
You must be signed in to change notification settings - Fork 743
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can't add a new Uno application project to an existing solution in VS2022 #16973
Comments
Thanks for the report. We're currently hitting a limitation of Visual Studio, where VS does not allow for custom The best way, for now, to add a new project in an existing solution is either by creating it from a separate visual studio instance, then copy the project to the appropriate location, or by using |
Thanks! |
Just ran into the same issue here - a pity that this cannot be fixed as it might block new users getting into the Uno Platform if they hit this issue at the very start... |
@ab-tools We understand the issue, and we have no fix this at this time, as I mentioned above. |
I'm having trouble with the suggested workaround...
Expected result: it builds Actual result: "1>C:\GitHub\PcmHammer\Apps\PcmHammer2\App.xaml.cs(70,32,70,57): error CS0103: The name 'ReactiveViewModelMappings' does not exist in the current context" I saw this discussion about needing to install the Uno.Extensions.Reactive package: The package manager UI indicates that it's already installed as a transitive dependency. I hit the install button anyway, but still get the same compiler error. What steps should I take to troubleshoot this problem? |
It is likely that you have nuget restore issues. Uno apps depend on |
I moved global.json and the Directory.Build files into the same directory as the .sln file, and that got me a different error message. I have a .Net Standard 2.0 library in this solution, which apparently isn't compatible with the Uno configuration: error NU1008: Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items: Microsoft.Bcl.HashCode;DynamicExpresso.Core;System.Xml.XmlSerializer;System.Collections.Immutable;Newtonsoft.Json. I realize this is a Microsoft problem rather than an Uno problem, but that error message would have been a lot more helpful if it had indicated that PackageReference is an element in the .csproj file, and PackageVersion is an element in the Directory.Build.props file. Just thought I'd document this stuff for anyone else who ends up in the same predicament. |
Fixing that problem got me to a new error message about using Nullable with less-than-latest version of C#, and again Microsoft offers few clues about where these configuration settings are located. The fix was to add 12.0 to Directory.Build.props under Project/PropertyGroup. Now I have a bunch of warnings about null variables that were not declared nullable, but that's probably a good thing in the long run. And this is also not really an Uno problem, but something that maintainers of existing projects might run into on the road to Uno. Especially if those projects have been around for a few years. |
That said... I still have the missing ReactiveViewModelMappings problem: 1>C:\GitHub\PcmHammer\Apps\Uno\PcmHammer2\App.xaml.cs(70,32,70,57): error CS0103: The name 'ReactiveViewModelMappings' does not exist in the current context Which package is needed to resolve that issue? Or maybe I should ask, what is it that invokes BindableViewModelMappingGenerator during the build? I copied the global.json, Directory.Build.props, Directory.Build.targets, and Directory.Packages.props files that were created with my Uno project into the .sln directory of my existing project. and running "restore nuget packages" just prints "All packages are already installed and there is nothing to restore. Global.json:
Directory.Packages.props has a few added packages needed by my existing code:
Directory.Build.props:
|
Thanks for the updates. The It would help if you were to replicate your solution in repro sample so we could guide you. |
What determines whether the Reactive feature "is present?" Note that this same csproj and source files build and run just fine in the directory where the project was created, so everything needed is present on my machine. The code I'm working with is in the nsfw/net8-uno-ui branch of this repo: You can browse it here: PcmHammer2 is the Uno project. There's a ton of other stuff in that repo since it's an existing project and I'm trying to give it an Uno UI. If you'd prefer, I can try creating a smaller simpler .sln, and the add the Uno project to that. Thanks! |
The feature |
These are the features -
Adding Reactive to the list led to this error when I try to build in VS: 1>C:\Users\nate.nuget\packages\uno.sdk\5.4.8\targets\Uno.Implicit.Packages.targets(33,3): warning : Unable to parse 'reactive' to a known Uno Feature. Also, Should I be using a version other than 5.4.8? I don't recall choosing a version when I installed Uno or when I created the project, so I assume it was just the latest available when I installed the Uno extension. Thanks! |
My apologies, |
Here you go. And thanks again for your help! |
Thanks. So the generators are running properly, but it may be that the class in question is generated in a namespace that is not included by default in your file: From this generator, this class is in the namespace named after the assembly name. Could it be that you changed your project name and that the namespaces did not follow? |
Yes, that's probably it. I have shot myself in the foot. Thanks for bearing with me. |
Sorry but I have one more question - where is the the assembly name specified? |
Current behavior
Repro steps:
Expected results: an Uno application project is added to my solution.
Actual results: This dialog:
Note that there is no "same directory" checkbox on the previous screen.
That option only exists when creating a new solution.
I am not creating a new solution. I am adding a new project to an existing solution.
Expected behavior
After clicking "Create" there should be a new Uno Application project in my existing solution, alongside the existing projects.
How to reproduce it (as minimally and precisely as possible)
Unzip this file, open the solution inside it, try to add a new Uno Platform application as described above.
UnoNewAppRepro.zip
Workaround
I don't know of one.
Works on UWP/WinUI
None
Environment
No response
NuGet package version(s)
No response
Affected platforms
Windows (WinAppSDK)
IDE
Visual Studio 2022
IDE version
17.9.6
Relevant plugins
No response
Anything else we need to know?
If someone can point me to where the code is, I'm willing to take a shot at fixing this. But first I'd like to know why (or whether) this requirement seemed like a good idea in the first place. Even for new solutions, unless the application is tiny, it's normal to have multiple projects in subdirectories beneath the directory that contains the solution file.
Is there any scenario in which this "same directory" requirement is truly required, by-design?
Is other work required, in order to properly support the not-same-directory scenario?
The text was updated successfully, but these errors were encountered: