AWS Toolkit in VS2022 Renders System Unusable - amazon-web-services

Since the update before last to AWS Toolkit, when running Visual Studio 2022 with AWS Toolkit installed and enabled, the entire PC grinds to crawl.
Specifically, physical memory use shoots up to 99%, there's a huge amount of continuous disk activity and CPU use rises to around 50%. This renders the entire system completely unusable (think, two minute delay between clicking and something happening). Oddly, nothing appears in the process list in Task Manager that accounts for either the levels of memory or CPU use. It feels like a monumental memory leak but really I've no idea what's going on.
I've tried completely uninstalling and reinstalling VS and uninstalling, deleting the AWS Toolkit folder in "Users...etc." and reinstalling the Toolkit. Everything is fully up-to-date.
As I say, this has happened since the update before last. It's strange that it isn't mentioned anywhere that I can find on the internet and it's difficult to imagine that such a serious issue would only happen to me.
So, has this happened to anyone else and does anyone have a fix? I wanted to raise a support case on AWS Console but I only have a basic account so am unable to do so.

This issue has been resolved (see https://github.com/aws/aws-toolkit-visual-studio/issues/314#issuecomment-1401060605 for more details).
The system in question is running Windows 7. At some point .NET 7 was installed onto it (possibly as a result of a Visual Studio update). .NET 7 does not support Windows 7, and dotnet publish commands started to produce internal errors, and is taking a long time to complete. The AWS Toolkit's Lambda publishing features are built on top of the dotnet CLI commands, which is how the degradation was noticed.
This can be mitigated by installing an older version of .NET (like .NET 6) and telling the dotnet tooling to use a specific version of .NET instead of the latest detected version.
From https://learn.microsoft.com/en-us/dotnet/core/tools/global-json:
The global.json file allows you to define which .NET SDK version is used when you run .NET CLI commands. Selecting the .NET SDK version is independent from specifying the runtime version a project targets. The .NET SDK version indicates which version of the .NET CLI is used.
Add a global.json file to the same folder as your project or solution with the contents shown below, referring to the .NET SDK version you want to use (the example below uses 6.0.300)
{
"sdk": {
"version": "6.0.300"
}
}

Related

How often do Cloud Build Node.js versions update?

I couldn't stomach purchasing the $150 for GCP's support service for this one question. I'm just looking to understand the schedule for Cloud Build Node.js versions. It's still stuck on Node.js v10.10 and my projects are starting to require higher versions to build. According to Cloud Build's changelog, I don't believe the Node.js version has updated in years. Any ideas?
As per the official Github repository:
Our client libraries follow the Node.js release schedule. Libraries are compatible with all current active and maintenance versions of Node.js.
So, this means it should work with Node.js 12 and the updates should be more constant. In addition to that, in here, it says that if you are using a Cloud Build config file, you can use Node.js 12, so the Node.js' latest version should be compatible with Cloud Build.
To summarize, by the repository, it should follow Node.js schedule. However, in case you think this is not occurring, I would recommend you to raise a bug on the Google's Issue Tracker - it's free, by the way - so they can assess this.

VS2017 not showing Report Viewer in prerequisites

I am trying to deploy a wpf application with an embedded rdlc report using clickonce. The previous version of report viewer (in VS2015) was built-in so it was easy and convenient to use and I had no issues deploying this project.
Now since easy and convenient is not the goal anymore, in vs2017 after a failed deploy with an error message that gave me absolutely no help, I have come to realize that apparently you have to install 2 additional VS extensions and a report viewer runtime on every machine where an app uses and rdlc reports (feels like crystal reports all over again) and you have to exclude the automatically included Chinese localization files in your clickonce deployment (which cause a manifest parse error). Anyway, the instructions on MS website say that click once should have a "Microsoft Visual Studio Report Viewer" prerequisite option to select as requirement of installing your app. However, after installing the runtime on my development machine, restarting visual studio, this option is not available. Does anyone know how to get this to work?
I used Project|Manage NuGet Packages to add this package to my project.
https://www.nuget.org/packages/Microsoft.ReportViewer.Runtime.Common/12.0.2402.15
If you search with Manage NuGet Packages, there's quite a few ReportViewer related items. I'm not sure which ones are appropriate to your WPF app.
Anyway, the deployment project picked up the various ReportViewer assembly dependencies and everything seems to be working without the EXE redist from MS.

On Visual Studio load, AWS Toolkit posts get instance metadata and gets timeout (502). How do I disable that?

When I have the AWS Toolkit installed, it takes a long time for Visual Studio (2015 update 2) to open.
Why? Because (as I saw using Fiddler) it's posting to 169.254.169.254/latest/dynamic/instance-identity/document like 9 times, and timing out every time.
I found this article which explains what that's all about.
But how do I turn it off? I really don't want to wait for so long for Visual Studio to load every time I open it.
The underlying SDK that the toolkit uses had a bug, fixed last week, where it was attempting to always fetch instance metadata to try and determine the AWS region (even when not running on an EC2 instance). I don't recall the version of the toolkit being built on that SDK version but it's possible.
A colleague posted an updated toolkit (1.9.6.21) this evening for an unrelated change - can you install this and see if you still see an issue? If so I'll take a look when I get into the office.

Getting started developing with Sitecore CMS on a Mac using C#

We are going to be switching to Sitecore for our CMS and my team uses Macs. We have no .net, c# experience but are excited to learn. I understand Microsoft recently released Visual Studio Code to work on Mac, and I've looked into Xamarin. Can someone provide any tips for a Mac guy?
Visual Studio for Mac will not help you because Sitecore quite tightly relates on windows features like IIS and windows filesystem with drives and paths; also the rest of cross-platform ASP.NET 5 features (like owin etc.) are not yet supported by Sitecore.
At the moment the best way to work with Sitecore on Mac is virtualisation and in particular - Parallels Desktop for Mac. I am using that myself for last 3 years - that is the most convenient way. Parallels Desktop is a virtual machine solution that integrates your Windows VM very tightly into Mac, you can run multiple (let's say 2-4) Windows virtual machines at the same time (nice to test Content Management / Content Delivery distributed between separate "machines" just on one Mac) - they are all connected to each other and Mac by a "network". Also you will need to have an instance of SQL server (in that case you may allocate a separate VM or simply reference an external SQL server).
Parallels Desktop has a mode called Coherence, when in fact win and mac environments are sort of merged into each other, so you can for example drag-drop from Finder into Windows Exploreк like you do it natively, and get Windows start button at you Dock and many other great features.
However I prefer to run Parallels in a full screen mode on a second monitor to be 1-to-1 like a regular Windows machine. By setting hosts file on Mac machine I can run CMS and hosted websites right from Safari on Mac.
Also virtual machines are stored as folders on your hard drive, so you can easily backup your current state of OS as easy as just archiving that folder, and later revert to that moments you have "saved" - very helpful to experiment, especially if you are a beginner in Sitecore, so you'd not afraid to break anything accidentally.
Good place to start: official website, as well as quickly investigate all its magic on YouTube reviews.
P.S. of course, you may use any alternative virtualisation software, like VmWare etc.
I use Visual Studio for Mac to build my Sitecore solutions. We use a gulp task based on the one that comes with Habitat to deploy changes to files (binaries, views, config, etc...) into a Windows virtual machine running in Parallels on my Mac.
There have only been two things I am missing from Visual Studio on Windows - debugging and Sitecore Rocks.
If you can live without those two things you can definitely develop your Sitecore solutions from a Mac with Sitecore running in Windows.

.NET 4.0 upgrade error on MSI install - XML does not contain expected attribute error

We have an MSI to install windows service on client machine.
Windows service calls the web service of our server to perform operations.
Initially both the MSI and web service were built using .NET 2.0 framework.
Last quarter we upgraded our systems to .NET 4.0. Though our web service is still ASP.NET i.e. asmx (and not WCF). Also I did set framework 4.0 as the prerequisite for MSI to install.
One of our clients reported this issue:
Client was using .NET framework 2.0, and had the older version of MSI installed in his system.
When he tried to installed the .NET framework 4.0 version of the MSI, was prompted to install framework 4.0 (because of the prerequisite). Once the framework installation finished, he tried to install the MSI and got this error. Can someone please guide me to the resolution. I can provide details if needed.
EDIT 1:
On more research, I found it is my AppName.installstate file. Uninstall removes this file, but upgrade does not do it. The file is lying in the install directory. On a closer look I can see "http://schemas.xmlsoap.org/soap/envelope/:Envelope" in the file contents. Any pointer would be greatly appreciated.
EDIT 2:
Custom action Install creates AppName.installstate file and custom action Uninstall deletes the file. In my case, I am doing an MSI upgrade which does not do anything to this file. When I compared the installstate file from 2.0 and 4.0 (both installed manually), I could see a huge difference in the XML syntax, schema and contents, the reason, I am getting serialization error. Now I need to know why AppName.installstate is not getting overwritten when upgraded. Doing lot of google, but landing nowhere.
Looked at MSI install log, but no useful information.
Eureka !!!!
I found solution to my problem.
Root cause of the problem:
MSI generates an XML file during installation (application_name.installstate), which stores information MSI uses during install, uninstall, rollback. The format of this XML file is completely different between .NET 2.0 and .NET 4.0 i.e. MSI developed using VS2005 and VS2010.
Because 4.0 frmaework is not able to understand the file generated by Old Framework version (2.0), we are getting the error saying “Not able to serialize the Type of the Installstate file”.
Though there is no documentation available online for this, there is this discussion I found > http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/bedbb8bd-dad5-4bcb-a87a-ac69386669b4/
Solution I tried (I would call it work-around):
During installation of the New version, I am explicitly replacing the old XML file with the new format (4.0). i.e I included application_Name.installstate file (generated by new version) in my package, so it overwrote the old file while upgrade.
MSI got installed without any error and is running successfully.
Reply here if anybody needs detail on both problem and solution.
This error message has nothing to do with the installer per the 1001 error message. The problem is fully inside your service.
Your service's OnStart method should be doing nothing but spinning up a background process and returning success start to the service control manager as quickly as possible. There shouldn't be any long running code in that critical path as the SCM will only wait so long before assuming there was an error starting the service.
Refactor your service to run the job on another thread and the install will successfully install. From there you can focus on the real problem of what's going on in your DeSerialization process.