Updating Linked Files in Visual Studio - hyperlink

I have a Universal App with t4 templates: in my Windows Project Models folder and the Windows Phone Models folder links to these files. I just update a database table with new fields and added another table, updated my edmx to reflect the new changes and I have a pcl DataModels Models folder with the original t4 templates updated also.
Is there another way to update the links in the Windows Phone folder without having to remove it and re-linking? I tried to just link the new .g.cs class, but it was listed outside the .tt file list.
Thanks!...

First; I am no expert on EF nor universal apps but if all you need is C# files to be included one way to do so is using T4Include.
First you grab T4Include of nuget and add a TT file to your project:
<#
// The relative path to project holding the source code you wish to include
ProjectFileName = #"..\SharingCode\SharingCode.csproj" ;
Namespace = "SharingCode" ;
#>
<## include file="$(SolutionDir)\packages\T4Include.1.1.4\T4\IncludeProject.ttinclude" #>
Hopefully it's a good enough fit for you.

Today I just found out how to update my linked T4 file in VS 2013 Community by right clicking the file and selecting [Run Custom Tool].

Related

Asp.Net MVC Core 3.1. why index.cshtml.g.cs added to the view folder and no error

Recently I started to notice that my project is adding views with xxx.chtml.g.cs. I tired to search for the answers within stackoverflow and other resources, and the answer I am getting that these files are generated due to some error. But for me there neither is no issue nor getting any compile error. This generated files have hardcoded obsolete path to the resources, and this is what my concern is, if I was working in a the team and other team member would pick up the code what if these files are to be used and won't find the resources on the path.
These files are added into the debug folder: MySolution\MyMVCProject\Debug\netcoreapp3.1\Razor\Views\Disenfection
If someone suggest me to delete the folder or tells me it won't effect then my question will be how I can keep my code clean and do not generate this unnecessary files. I am using asp.net MVC and VS 2019 community addition.
[
I figured those files are auto generated files. I used Visual Studio 2019 and when checking codes. I went to each suspicious files, right clicked on it. If it said 'Local file ignore' I clicked on it and it was saved in .gitignore file. This way I was able to not check-in my code.

VS2013 AddIn into VS2015 VSPackage: How can I create ToolWindow2

Can anyone please guide me how can I convert Add-Ins to VSPackage Extention without recreating/replicating everything into VSIX?
I have one addin which is supporting VS2010 to VS2013. I have everything in .sln. I want to migrate/create .addin into .vsix for compatibility issue of VS2015. After few research, I have found that the code what is written in IDTCommandTarget.Exec method has to run into my custom command class of vsix project...
So, I created a new .vsix project in same solution & add a reference of my .addin project into .vsix project and I am able to load initial controls of my addin project as like below...
enter image description here
but as per the code, I want to create CreateToolWindow2 on double click of my tree node but I am getting following error (null AddInInstance)...
enter image description here
Can anyone please guide me how can I create an Instance of AddIn class to create ToolWindow2?
This is not quite the way to do this. You create a .VSIX project, then add a Custom Command, and you add the code/logic that was in your old addin's Exec method, to the custom commands MenuItemCallback method.
Note, you no longer need to programmatically create the menus/commands, toolbars, etc. VSPackages have an entirely different (and much more effective way) via the .VSCT file.
FAQ: Converting Add-ins to VSPackage Extensions
To convert an add-in to a package is not easy or trivial, you need to use .vsct file to create menus, toolbars, commands, etc.
About toolwindows:
The usual way for packages is:
HOWTO: Create a toolwindow with a ToolWindowPane class in a Visual Studio package
http://www.visualstudioextensibility.com/articles/packages/
But you can do it in the same way as add-ins:
HOWTO: Create a toolwindow without a ToolWindowPane class in a Visual Studio package
(same link)
About not "duplicating everything" when migrating an add-in to a package, see my post:
Strategies migrating from Visual Studio add-ins to packages

Developing Umbraco with Visual Studio - best practices

I have two environments that use Umbraco: Live and Dev.
As I have in research, Umbraco will be create a physical file when a user creates a new partial view, macro, etc. so, I have two questions:
1. What is the best way to know which files were created on Live and how to migrate them to Dev environment for the purpose of creating new features?
I have tried to Google and found "Hybrid Framework" but it is not up to date and I want to maintain code by myself.
2. I want to extend Umbraco with my own code. What is the best practice for this? (I do not want to change any code in the original Umbraco Source, just create my own new code)
As I know, I can create a package for extending code but I just want to know the other ways.
Partial Views, Macros , Templates are .cshtml files, these will not affect your source code. Same is case with css and js files; these will not harm any source code.
Just copy paste these files in respective folders and reload the nodes in backend. It will work properly.
Other way is you can create a package zip file from developer section where you can export datatypes, content and files, and install it in other environment.

Cannot add a MVC controller VS2012 gives "object reference not set to an instance of an object"

I have searched extensively and cannot find another person on the planet with this problem...
The symptoms are:In Visual Studio 2012, on a MVC 4.0 Project that was upgraded from VS2010 and is configured for dual version editing from VS2012 and VS2010. When I right-click on the Controllers Folder and select Add->Controller... from the context menu, I get an "Object reference not set to an instance of an object" error from Visual Studio.
The existing code in the project runs fine, and if I use the Add->New Item option instead, and pick the Controller from the dialog box, then I can add a blank controller. I just cannot add a typed controller using the method above.
If I however create a new MVC4 Project, then I can add typed controllers again using the same menu, so the problem does not exist in Visual Studio's installation, it has to exist in the Project File. I have also checked the references between my project and a new MVC Project and all the new project references are included in my project.Has anyone experienced something similar?How do I fix this?
The issue seems to have been caused by an incomplete install/registration of the MvcScaffolder package.
The following process resolved my issue for me.
Start Visual Studio and open the project. Open the Package Manager Console. (This was the "trick" or missing piece of information that led to the solution...)
Here I saw the following error caused by the PowerShell script used for registration:
New-Object : Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
At <ProjectPath...>\packages\MvcScaffolding.1.0.9\tools\registerWithMvcTooling.ps1:163 char:27
+ $newProvider = New-Object <<<< $powerShellScaffolderProviderType($mvcScaffoldingProvider)
+ CategoryInfo : NotSpecified: (:) [New-Object], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException, Microsoft.PowerShell.Commands.NewObjectCommand
When I checked the registered scaffolders from the Package Manager Console I got:
PM> get-defaultscaffolder
DefaultName ScaffolderName
Action MvcScaffolding.Action
Controller MvcScaffolding.Controller
CustomScaffolder T4Scaffolding.CustomScaffolder
CustomTemplate T4Scaffolding.CustomTemplate
DbContext T4Scaffolding.EFDbContext
Mailer Mailer.Razor
Repository T4Scaffolding.EFRepository
UnitTest MvcScaffolding.ActionUnitTest
View MvcScaffolding.RazorView
Views MvcScaffolding.Views
So clearly the scaffolders are configured to use the MvcScaffolding package, but the package had a registration error.
A quick search for the error provided this link http://mvcscaffolding.codeplex.com/discussions/437692 which refers to https://visioautomation.codeplex.com/discussions/397034 that suggests installing PowerShell 3, which is actually part of the Windows Management Framework 3.0, available from http://www.microsoft.com/en-us/download/details.aspx?id=34595. I picked the Windows6.1-KB2506143-x64.msu file when prompted because I’m running Win 7-64-bit.
Restart the PC after installation, re-open Visual Studio and the project and look at the Package Manager Console. If the error is gone, then so is the controller problem.
I had this problem on VS2012 on Win8, We where working on a project that we started developing on VS2010 and i wasn't able to create new controllers with the CTRL+M, CTRL+C shortcut.
Opening any project and re-installing MvcScaffolder and its dependencies under Manage Nuget package have fixed this for me.
Didn't have to restart VS2012 at all.
Maybe your existing project have wrong ProjectTypeGuids element in .csproj file?
Right one for MVC4 is {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Try to compare what project type do you have in new project and in your existing project.
The preferred answer of installing the Windows Management Framework 3.0 did not work. The download "Windows6.1-KB2506143-x86.msu" did not work on my Windows 7 32 bit system. It failed with the error "The update is not applicable to your computer".
Reinstalling MVCscaffolding with Manage Nuget Packages did not work.
My ProjectType GUID was correct.
Microsoft Web Developer Tools was already installed.
Deleting and recreating the solution didn't work.
It was necessary to repair the Visual Studio 2012 installation from the install disk to fix this issue.
Installing "Microsoft Web Developer Tools" fixed this for me. Related:
How do I open a csproj with ProjectTypeGuids 349c5851-65df-11da-9384-00065b846f21?
{E3E379DF-F4C6-4180-9B81-6769533ABE47} - MVC4 Project
{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - CSharp Project
{349c5851-65df-11da-9384-00065b846f21} - Web Application Project (this is what you need web dev tools for)
The update Windows6.1-KB2506143-x64.msu worked for me. The problem started after a full SpyWare software scan. I think that it removes more things than the usual. So, back to normal life.
I had the same problem, im using database first, and it was because i have changed the .edmx contex.tt to generate the contex.cs with the connection name set to a custom method,
: base(sqlHelper.getMainConnectionString())
every time, before i change/update the .edmx, i need to change the connection name to it's creation defaults:
: base("name=YourWebconfigConnectionstringName")
rebuild the project and it works again
Answer:
Check your connectionstring string and provider parameters at the webconfig, then delete and recreate the .edmx this will force the generator to rebuild all the database objects, metadata included OR delete all tables in the designer, change the contex.cs to the default creation name, rebuild the project, add the tables, rebuild the project, it shoul work again.
This problem manifested on a target MVC5 project using VS2017.
Like the original op, a new project was attempted to perform an Add Controller with EF scaffolding against ApplicationUser. The error did initially manifest until a single user was registered forcing the database to be created. After that, add scaffolding worked without incident. I think this makes sense because the entity didn't really yet exist before the first registration, although I will stand corrected if someone more knowledgeable than myself has a more accurate explanation. But because Add Controller worked with a new project, just as the original op determined, it didn't seem to be a VS2017 installation problem. This pointed to something wrong with the taret project.
At this point in the target project an Undo All in Team Explorer was executed to get the project back to a previously working point. While this might be accomplished by getting a specific version, for this target project all that was required was an Undo All. A word of caution: in the case of this specific project, before undoing, the Package Manager was used to rollback the database to the starting point that would match with the Undo All. If one performs a get specific version, be sure to check if the database needs to get rolled back to the proper configuration. After resetting all the project changes, the object reference not set to an instance of an object error was no longer present during the Add Controller operation, fixing the error within the target project.
I post this response somewhat reluctantly because I am unable to duplicate the error, and I am unsure of what actually caused the problem in the first place, but this is a particularly nasty error if one is in the middle of a project and Add Controller starts failing. I figured if someone has this problem and rolling back the current change set might fix it for them, like me they will be thankful. If I later determine the pattern of activity that caused the problem to crop up in the first place, I'll surely add more to this post.
I'm running VS 2019 Enterprise, ASP.NET Core 3.1.3.
I was trying to add MVC controller with views using Entity Framework (EF) after scaffolding in database first approach.
I run on this issue because one of the tables in my ER model was missing primary key.
That table was connected to table for which I tried to generate MVC controller through another table that has primary key so I didn't noticed initially that error.

Changing the generated code for "Add View"

I would like for the generate "List" view contents to have a check added to it to first check that the model has elements, it occurs to me that I have no idea how these views are generated. Can those be changed?
Visual Studio uses "T4" (Text Template Transformation Toolkit) templates to generate the code when you ask for a new file, and yes, they can be edited.
Basically, you find the default templates, copy them into your project, and then edit them to create project-specific custom new-item templates which VS will use instead of the defaults.
A good set of basic instructions can be found at:
http://blogs.msdn.com/webdevtools/archive/2009/01/29/t4-templates-a-quick-start-guide-for-asp-net-mvc-developers.aspx
They are T4 templates located in:
Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\CodeTemplates\AddView
Also take a look at this article, it describes how to change the templates on a per project basis.
There is also another option, where in the MVC project you can make a folder called CodeTemplate and put the .tt files in there. Then those templates will be used as well.

Resources