avaloniaui / avaloniavs Goto Github PK
View Code? Open in Web Editor NEWVisual Studio Extension for Avalonia
License: MIT License
Visual Studio Extension for Avalonia
License: MIT License
Steps to reproduce:
Expected result:
The source view should still be the default view until the user selects something else.
Actual result:
The designer view creeps up on, and forces itself upon the innocent and totally unsuspecting user.
Workaround:
Close the XAML file and reopen it again. Very annoying!
Visual Studio team added project template tags, so the templates can be filtered and found easier. Read more: Build Visual Studio templates with tags, for efficient user search and grouping
Steps to Reproduce:
Expected Result:
Intellisence should work even with the designer disabled.
Actual Result:
No intellisence.
In the event that a person renamed the document that the designer is targeting, it is possible the designer might fail because it is referencing a non-existent file, or cause the old file to be recreated on save, We will need to be able to handle this.
Currently Avalonia Previewer tries to immediately show an error message while user is typing code (it fails in that tho).
I think it's better to let user write the code, then decide to show any errors.
Or if you think it should report the error immediately, I think XAML Studio's approach can be used too, it shows up an error message popup on top of the last error-less design:
Originally by @kekekeks (Modified to reference external repository)
Depends on AvaloniaUI/Avalonia#154 and AvaloniaUI/Avalonia#152. Also need to somehow obtain the type of DataContext. Possible solution is extracting one from loaded XAML. For DataTemplates it should be easy to extract the type from DataType property.
Originally by @kekekeks
That's because it tries to locate all types in the output directory. It might be worth to scan in /packages directory instead.
In a solution that contains an avalonia project and a c++ dll project,
when you select an avalonia xaml file visual studio crashes with "The type initializer for 'AvaloniaVS.Infrastructure.ProjectInfoService' threw an exception".
Disabling the extension or removing the dll project prevents the crash. It can be reproduced with just empty avalonia and c++ dll projects.
When the designer is loaded, it will pull information about the output assembly so that the designer can do it' magic. If while a designer is open, a person decides to rename their output assembly, it is possible that the previously open designer view will fail or will not update with changes.
I think since we did transition back to xaml, we still should allow the extension to work with paml file for a limited time to make transitioning a little easier for some users.
Like DockPanel.Dock
or Grid.Column
Originally by @Sergey-Terekhin
WrapPanel in the designer does not wrap content (see images below)
Runtime:
WrapPanel in Runtime
Designer:
WrapPanel in Designer
I'm seeing that NuGet.config created by this extension doesn't work if placed next to .csproj file, but it works when placed next to .sln.
Anybody seeing the same?
VS 2017 15.8.2
Migrated from AvaloniaUI/Avalonia#381
It always seems to display at a fixed size.
Is there a way of displaying these?
Using VS2017 15.9.11. When opening the designer, the designer fails before the Window is fully rendered (see below) due to an InvalidOperationException. Interestingly, after building the project while the designer is open / in view, it starts displaying correctly without exception!
If the designer fails to load my XAML in this way, it displays a single dot, instead of a detailed message as it did in the past. Even in the log, the exception details are heavily truncated. If I set DesignWidth and DesignHeight, the window is sometimes partially rendered (in white, or with some elements), but there's still no exception details. Log:
(paths to my files trimmed)
10:48:48.541 [Verbose] Finished PreviewerProcess.OnMessageAsync()
10:48:51.864 [Verbose] Started EditorFactory.CreateEditorInstance("\Sage\Views\MainWindow.xaml")
10:48:51.864 [Verbose] Started EditorFactory.GetTextBuffer("\Sage\Views\MainWindow.xaml")
10:48:51.879 [Verbose] Finished EditorFactory.GetTextBuffer("\Sage\Views\MainWindow.xaml")
10:48:51.879 [Verbose] Started EditorFactory.CreateEditorControl()
10:48:51.897 [Verbose] Finished EditorFactory.CreateEditorControl()
10:48:51.898 [Verbose] Finished EditorFactory.CreateEditorInstance("\Sage\Views\MainWindow.xaml")
10:48:51.899 [Verbose] Started DesignerPane.Initialize()
10:48:51.902 [Verbose] Started AvaloniaDesigner.Start()
10:48:51.904 [Verbose] Started AvaloniaDesigner.LoadTargetsAndStartProcessAsync()
10:48:51.904 [Verbose] Started AvaloniaDesigner.LoadTargetsAsync()
10:48:51.942 [Verbose] Finished AvaloniaDesigner.LoadTargetsAsync()
10:48:51.942 [Verbose] Started AvaloniaDesigner.StartProcessAsync()
10:48:51.942 [Verbose] 0 Started PreviewerProcess.StartAsync()
10:48:51.942 [Information] 0 Starting previewer process for '"\bin\Debug\netcoreapp2.1\Sage.dll"'
10:48:51.943 [Debug] 0 > dotnet.exe "exec --runtimeconfig \"\bin\Debug\netcoreapp2.1\Sage.runtimeconfig.json\" --depsfile \"\bin\Debug\netcoreapp2.1\Sage.deps.json\" \"\appdata\local\microsoft\visualstudio\15.0_3da171d8\extensions\ujtglfcn.mr1\Avalonia.Designer.HostApp.dll\" --transport tcp-bson://127.0.0.1:8906/ \"\bin\Debug\netcoreapp2.1\Sage.dll\""
10:48:51.944 [Information] 15744 Started previewer process for '"\bin\Debug\netcoreapp2.1\Sage.dll"'. Waiting for connection to be initialized.
10:48:51.944 [Verbose] Finished AvaloniaDesigner.Start()
10:48:51.944 [Verbose] Finished DesignerPane.Initialize()
10:48:51.942 [Verbose] Started AvaloniaDesigner.CreateCompletionMetadataAsync()
10:48:52.041 [Debug] 15744 <= "Obtaining AppBuilder instance from Sage.Program.BuildAvaloniaApp"
10:48:52.026 [Verbose] 15744 Started PreviewerProcess.ConnectionInitializedAsync()
10:48:52.091 [Debug] 15744 <= "Initializing application in design mode"
10:48:52.091 [Information] 15744 Connection initialized
10:48:52.170 [Debug] 15744 => Sending ClientSupportedPixelFormatsMessage { Formats: [Bgra8888, Rgba8888] }
10:48:52.171 [Debug] 15744 => Sending ClientRenderInfoMessage { DpiX: 96, DpiY: 96 }
10:48:52.175 [Verbose] 15744 Finished PreviewerProcess.ConnectionInitializedAsync()
10:48:52.269 [Debug] 15744 => Sending UpdateXamlMessage { Xaml: "<Window xmlns=\"https://github.c…", AssemblyPath: "\bin\De…", XamlFileProjectPath: null }
10:48:52.269 [Verbose] 15744 Finished PreviewerProcess.StartAsync()
10:48:52.329 [Debug] 15744 => Sending UpdateXamlMessage { Xaml: "<Window xmlns=\"https://github.c…", AssemblyPath: "\bin\De…", XamlFileProjectPath: null }
10:48:52.331 [Verbose] Finished AvaloniaDesigner.StartProcessAsync()
10:48:52.331 [Verbose] Finished AvaloniaDesigner.LoadTargetsAndStartProcessAsync()
10:48:52.720 [Debug] 15744 <= "Sending StartDesignerSessionMessage"
10:48:52.733 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:52.745 [Debug] 15744 <= StartDesignerSessionMessage { SessionId: "2019d67f-a6a6-433e-abc1-f6bc2b9…" }
10:48:52.745 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.011 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.020 [Debug] 15744 <= RequestViewportResizeMessage { Width: 540, Height: 34 }
10:48:53.028 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.042 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.043 [Debug] 15744 <= RequestViewportResizeMessage { Width: 540, Height: 34 }
10:48:53.043 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.044 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.044 [Debug] 15744 <= RequestViewportResizeMessage { Width: 540, Height: 34 }
10:48:53.044 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.071 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.072 [Debug] 15744 <= FrameMessage { SequenceId: 1, Format: Bgra8888, Data: "00000000000000000000000000000000... (73440 bytes)", Width: 540, Height: 34, Stride: 2160 }
10:48:53.082 [Debug] 15744 => Sending FrameReceivedMessage { SequenceId: 1 }
10:48:53.101 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.103 [Debug] 15744 <= UpdateXamlResultMessage { Error: null, Handle: null, Exception: null }
10:48:53.103 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.106 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.143 [Verbose] Finished AvaloniaDesigner.CreateCompletionMetadataAsync()
10:48:53.188 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.189 [Debug] 15744 <= UpdateXamlResultMessage { Error: "System.InvalidOperationExceptio…", Handle: null, Exception: ExceptionDetails { ExceptionType: "System.InvalidOperationException", Message: "The control already has a visua…", LineNumber: null, LinePosition: null } }
10:48:53.191 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
10:48:53.192 [Verbose] 15744 Started PreviewerProcess.OnMessageAsync()
10:48:53.192 [Debug] 15744 <= FrameMessage { SequenceId: 1, Format: Bgra8888, Data: "00000000", Width: 1, Height: 1, Stride: 4 }
10:48:53.193 [Debug] 15744 => Sending FrameReceivedMessage { SequenceId: 1 }
10:48:53.222 [Verbose] 15744 Finished PreviewerProcess.OnMessageAsync()
Unfortunately I have not been able to reliably reproduce this with another project, so here is the XAML. Hope it helps, let me know if you need some of the code and styles:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Sage.ViewModels;assembly=Sage"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
xmlns:helpers="clr-namespace:Sage.Helpers"
Icon="resm:Sage.Assets.avalonia-logo.ico"
HasSystemDecorations="False"
ShowInTaskbar="True"
Title="Sage"
Height="34" Width="540">
<Window.Resources>
<helpers:MultiplyConverter x:Key="MultiplyConverter" />
<helpers:ThicknessConverter x:Key="ThicknessConverter" />
<helpers:AddMultiConverter x:Key="AddMultiConverter" />
<helpers:DivideMultiConverter x:Key="DivideMultiConverter" />
<helpers:MinMaxMultiConverter x:Key="MinMaxMultiConverter" />
<helpers:ConcatMultiConverter x:Key="ConcatMultiConverter" />
</Window.Resources>
<Design.DataContext>
<vm:MainWindowViewModel />
</Design.DataContext>
<i:Interaction.Behaviors>
<helpers:WindowDragBehavior />
</i:Interaction.Behaviors>
<Border Background="{DynamicResource ThemeBackgroundBrush}" BorderBrush="{DynamicResource ThemeBorderHighBrush}"
BorderThickness="{DynamicResource ThemeBorderThickness}" VerticalAlignment="Stretch">
<StackPanel Orientation="Vertical">
<Grid />
<Grid ColumnDefinitions="*,Auto" HorizontalAlignment="Stretch">
<Canvas x:Name="ScrollingHost" ClipToBounds="True" Margin="2">
<StackPanel Orientation="Horizontal">
<StackPanel.Styles>
<Style Selector="StackPanel">
<Style.Animations>
<Animation IterationCount="Infinite" Duration="0:0:3">
<KeyFrame Cue="0%">
<Setter Property="Canvas.Right"
Value="{Binding #TextBlob.Bounds.Width, Converter={StaticResource MultiplyConverter}, ConverterParameter=-1}" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Canvas.Right" Value="{Binding #TextBlobClone.Margin.Left}" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</StackPanel.Styles>
<TextBlock Classes="scrolling"
x:Name="TextBlob"
Text="{Binding Message}" />
<TextBlock Classes="scrolling"
x:Name="TextBlobClone"
Text="{Binding Message}">
<TextBlock.Margin>
<MultiBinding>
<MultiBinding.Converter>
<helpers:ConverterChain>
<helpers:ConverterChain.MultiValueConverter>
<helpers:MultiConverterWithParameter Converter="{StaticResource MinMaxMultiConverter}" Parameter="Max"/>
</helpers:ConverterChain.MultiValueConverter>
<helpers:ConverterWithParameter Converter="{StaticResource ThicknessConverter}" Parameter="Left"/>
</helpers:ConverterChain>
</MultiBinding.Converter>
<MultiBinding Converter="{StaticResource AddMultiConverter}" ConverterParameter="/2">
<Binding Path="#ScrollingHost.Bounds.Width"/>
<Binding Path="#TextBlob.Bounds.Width" Converter="{StaticResource MultiplyConverter}" ConverterParameter="-1"/>
</MultiBinding>
<Binding Path="MinScrollingMargin"/>
</MultiBinding>
</TextBlock.Margin>
</TextBlock>
</StackPanel>
</Canvas>
<UniformGrid Grid.Column="1" Rows="1" Columns="10" HorizontalAlignment="Left">
<Button Classes="icon prevIcon" />
<Button Classes="icon playIcon">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Click">
<ia:InvokeCommandAction Command="{Binding PlayCommand}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</Button>
<Button Classes="icon nextIcon" />
<Button Classes="icon stopIcon">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Click">
<ia:InvokeCommandAction Command="{Binding StopCommand}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</Button>
</UniformGrid>
</Grid>
</StackPanel>
</Border>
</Window>
Are there any plan to update the plugin to Avalonia 0.7?
Especially since now .net framework 4.6.1 is officially supported as a target.
Originally by @danwalmsley
i.e.
<TabItem xmlns="https://github.com/perspex" Header="Type"> <DropDown Items="{Binding ProjectTypeOptions}" SelectedItem="{Binding ProjectType, Mode=TwoWay}" /> </TabItem>
Above could be rendered if Designer wrapped it in a Presenter.. currently it doesn't.
Avalonia designer at some point lock the output assembly and prevents successful buil, usually after 10-20 minutes usage and many code changes and builds.
Here is the log of the designer output:
Mode: vsIDEModeDebug
KillAllDesigners
Mode: vsIDEModeDesign
KillAllDesigners
Designer restart requested, waiting
Designer restart requested, waiting
Restarting designer
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Designer restart requested, waiting
Mode: vsIDEModeDebug
KillAllDesigners
Mode: vsIDEModeDesign
-- probably around here started locking assembly
KillAllDesigners
Designer restart requested, waiting
Designer restart requested, waiting
Restarting designer
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Designer restart requested, waiting
Restarting designer
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Designer restart requested, waiting
KillAllDesigners
Restarting designer
Restarting designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Designer restart requested, waiting
Restarting designer
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
Restarting designer
KillAllDesigners
Killing Avalonia.Designer
BuildEnd: vsBuildScopeProject/vsBuildActionBuild
Designer restart requested, waiting
--stopped locking output
Mode: vsIDEModeDebug
KillAllDesigners
Mode: vsIDEModeDesign
KillAllDesigners
Designer restart requested, waiting
Restarting designer
With Extension v0.7.0 all worked fine, after updating to v0.8.0, the previewer has the "reosurce not found" error message System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\UserName\Path\to\Project\ProjectName\Resources\Images\outline_home_white_36dp.png'.
for my image resources. All the image deklarations looked like this where the "Resources" directory is toplevel in the project. BUT, Run works:
<imaging:Bitmap x:Key="HomeIcon">
<x:Arguments>
<x:String>Resources/Images/outline_home_white_36dp.png</x:String>
</x:Arguments>
</imaging:Bitmap>
Changing the lines above to the following makes the previewer work, but the project can't find the resource on runtime now:
<imaging:Bitmap x:Key="HomeIcon">
<x:Arguments>
<x:String>ProjectName/Resources/Images/outline_home_white_36dp.png</x:String>
</x:Arguments>
</imaging:Bitmap>
I think the relies to where the instance of the application runs for the previewer and the double project directory. Path\ProjectName\ProjectName\bin\...
I'm anxious to try out Avalonia as the new graphical front end for the Reko decompiler. I used Visual Studio 2017's "Extensions and Updates" dialog to download AvaloniaVS. Version 0.6.01 installed. I added a new "Avalonia Application" in the File
> New
> Project
dialog. The following is the result:
In the VStudio Error List
I see:
Severity Code Description Project File Line Suppression State
Error CS0115 'App.Initialize()': no suitable method found to override Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\App.xaml.cs 8 Active
Error NU1108 Cycle detected.
Avalonia -> Avalonia (>= 0.6.1). Avalonia C:\dev\uxmal\reko\master\src\Drivers\Avalonia\Avalonia.csproj 1
Error NU1108 Cycle detected.
Avalonia -> Avalonia (>= 0.6.1). Avalonia C:\dev\uxmal\reko\master\src\Drivers\Avalonia\Avalonia.csproj 1
Error CS0103 The name 'AppBuilder' does not exist in the current context Avalonia(net461), Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\Program.cs 15 Active
Error CS0246 The type or namespace name 'AppBuilder' could not be found (are you missing a using directive or an assembly reference?) Avalonia(net461), Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\Program.cs 14 Active
Error CS0246 The type or namespace name 'Application' could not be found (are you missing a using directive or an assembly reference?) Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\App.xaml.cs 6 Active
Error CS0234 The type or namespace name 'Controls' does not exist in the namespace 'Avalonia' (are you missing an assembly reference?) Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\MainWindow.xaml.cs 2 Active
Error CS0234 The type or namespace name 'Logging' does not exist in the namespace 'Avalonia' (are you missing an assembly reference?) Avalonia(net461), Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\Program.cs 3 Active
Error CS0234 The type or namespace name 'Markup' does not exist in the namespace 'Avalonia' (are you missing an assembly reference?) Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\App.xaml.cs 2 Active
Error CS0234 The type or namespace name 'Markup' does not exist in the namespace 'Avalonia' (are you missing an assembly reference?) Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\MainWindow.xaml.cs 3 Active
Error CS0246 The type or namespace name 'Window' could not be found (are you missing a using directive or an assembly reference?) Avalonia(netcoreapp2.0) C:\dev\uxmal\reko\master\src\Drivers\Avalonia\MainWindow.xaml.cs 7 Active
My expectation was that this would work right off the bat. What am I doing wrong?
I assume the File Templates (User Control, Window) should be available for core projects, too. Currently, it's not possible to select them in the new dialog. I think it should be fixed by removing this line, but I cannot build the project, so I can't create a PR myself.
This will allow team members to receive updates as soon as we push them
I'm trying to build AvaloniaVS but it can't find the Avalonia.Ide repository and indeed it doesn't seem to exist.
The designer doesn't provide line information errors.
This should help prevent VS warning that our extension is slowing down VS.
Currently it's hardcoded to use win32 and Direct2D.
This is an initial implementation of the document outline, it will show up when Perspex xaml files are opened.
I plan to add the following:
I have created a PR ( #29 ) that adds Perspex as a submodule and then links the DesignerApi.cs
file to the designer so that it will pull the most up to date file from the repo and build.
I have opened this issue because even though this is nice, the designer only needs a single file from the Perspex repo. Additionally, this file is not updated often enough to warrant this to be really needed.
Should we bring the this PR into the repo (where DesignerApi.cs
is pulled from the submodule) or should we stick to keep the file locally and keeping that up to date manually?
Is there a possibility for this to be ported to Visual Studio for Mac? (formerly Xamarin Studio. It also uses the XS extension framework, not the VS one)
The designer no longer loads for me in VS2019 16.1.0 Preview 1.0 after updating to 0.8.0:
(paths to my files trimmed)
09:29:36.311 [Information] Avalonia Package initialized
10:29:05.474 [Verbose] Started EditorFactory.CreateEditorInstance("\Sage\Views\MainWindow.xaml")
10:29:05.476 [Verbose] Started EditorFactory.GetTextBuffer("\Sage\Views\MainWindow.xaml")
10:29:05.481 [Verbose] Finished EditorFactory.GetTextBuffer("\Sage\Views\MainWindow.xaml")
10:29:05.482 [Verbose] Started EditorFactory.CreateEditorControl()
10:29:05.520 [Verbose] Finished EditorFactory.CreateEditorControl()
10:29:05.522 [Verbose] Finished EditorFactory.CreateEditorInstance("\Sage\Views\MainWindow.xaml")
10:29:05.524 [Verbose] Started DesignerPane.Initialize()
10:29:05.556 [Verbose] Started AvaloniaDesigner.Start()
10:29:05.561 [Verbose] Started AvaloniaDesigner.LoadTargetsAndStartProcessAsync()
10:29:05.566 [Verbose] Started AvaloniaDesigner.LoadTargetsAsync()
10:29:05.611 [Verbose] Finished AvaloniaDesigner.Start()
10:29:05.611 [Verbose] Finished DesignerPane.Initialize()
10:29:05.611 [Error] Exception caught by FireAndForget
System.AggregateException: One or more errors occurred. ---> System.Runtime.InteropServices.COMException: Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
at EnvDTE.Configuration.get_Properties()
at AvaloniaVS.Services.SolutionService.<GetOutputInfoAsync>d__9.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Services\SolutionService.cs:line 220
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Services.SolutionService.<GetProjectsAsync>d__3.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Services\SolutionService.cs:line 110
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Views.AvaloniaDesigner.<LoadTargetsAsync>d__31.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Views\AvaloniaDesigner.xaml.cs:line 236
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Views.AvaloniaDesigner.<LoadTargetsAndStartProcessAsync>d__30.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Views\AvaloniaDesigner.xaml.cs:line 217
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.Runtime.InteropServices.COMException (0x80004005): Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
at EnvDTE.Configuration.get_Properties()
at AvaloniaVS.Services.SolutionService.<GetOutputInfoAsync>d__9.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Services\SolutionService.cs:line 220
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Services.SolutionService.<GetProjectsAsync>d__3.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Services\SolutionService.cs:line 110
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Views.AvaloniaDesigner.<LoadTargetsAsync>d__31.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Views\AvaloniaDesigner.xaml.cs:line 236
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AvaloniaVS.Views.AvaloniaDesigner.<LoadTargetsAndStartProcessAsync>d__30.MoveNext() in D:\projects\AvaloniaUI\AvaloniaVS\AvaloniaVS\Views\AvaloniaDesigner.xaml.cs:line 217<---
This issue slows down development with Avalonia greatly for me
The Avalonia designer occasionally somehow prevents the build process from copying the output file. Once I start getting the issue it goes away if I wait a bit, and it is likely to happen on the next build as well.
It is the following error:
error MSB3027: Could not copy "<project dir>\bin\Debug\netstandard2.0\<project>.UI.dll" to "..\bin\Debug_Windows\<project>.UI.dll". Exceeded retry count of 10. Failed.
error MSB3021: Unable to copy file "<project dir>\bin\Debug\netstandard2.0\<project>.UI.dll" to "..\bin\Debug_Windows\<project>.UI.dll". The requested operation cannot be performed on a file with a user-mapped section open.
The DLL above is the one which contains the code for all of the UI components and targets .NET Standard 2.0, and the main EXE targets .NET Framework 4.6.1 and just initializes the UI.
I have not experienced this issue with any other project (none of them use Avalonia).
shortcuts in the designer need to be captured and raised on the pane rather than the hwnd that is hosting the designer ui.
To see it in effect give keyboard focus to the editor, shift+f7 to toggle between the designer and the editor -- you see it work fine.
now give focus to the designer, by clicking on it using the mouse, do the same, and you will clearly notice the issue.
It worked when you gave focus to the editor, because what is hosting the designer in the new ui is a FocusableContentPresenter that will attempt to give focus to its content element, if it fails it will keep it. But when you initially give focus to the designer, the pane is not aware of the shortcut being activated.
E.g. when editing a xaml file that contains only styles.
Compare left (Visual Studio C# editor) with right (AvaloniaVS editor window in the same Visual Studio instance):
Font to the right looks significantly closer to bold. I think something's wrong with text rendering mode in Avalonia (namely, it looks like it has TextOptions.TextFormattingMode = Ideal
while Visual Studio windows have TextOptions.TextFormattingMode = Display
on my machine).
Investigating further; hope I'll be able to prepare a patch.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.