I have migrated my project from VS 2017 to VS 2022,
And I have a strange problem:
When attempting to add a new .JS file to the scripts folder
I don't have the option to select .JS file in the "Add New Item" menu (via right-click on scripts folder), only .TS or .JSON:
Tried "playing" with it and searching but did not find any solution.
can someone please tell me what am I missing?
This depends on one thing that is if you installed all required modules for Visual Studio 2022.
The basic thing here is to Right-Click on any directory/folder in the Solution Explorer window, Select Add and then New Item. You then click on the Language you are programming in. Note: if you don't click this folder, the options you may see would be only for the selected folder.
See below images...
Double-clicking a project used to toggle visibility of its files, but now it opens the csproj file.
This is different than the behavior we’ve had in VS for years. It’s not very often that you have to edit the csproj file. Is there any option or tweak to get the toggling behavior back like it was before ?
As to #Hans Passant answer :
« Use Tools > Options > Projects and Solutions > General, untick "Open SDK-style project files..." to restore the old behavior. »
Now the option is named as:
Open project files with double click or the enter key when supported
I have folders that fills by third part application, and I need to store all the files as part of my project. Include it one by one even manually a whole folder is pretty annoying, because I forced to make it everytime when new file apears or removes.
How to make it with Visual Studio Community?
I had similar issue working with webpack. I had to manually includes files in visual studio generated by webpack. You have to edit.csproj file.
Right click the project, and click on
Unload project
Right click the unloaded project and click on
Edit YOUR_PROJECT_NAME.csproj
Edit under , example, I wanted to include all files under my /Scripts/dist/ to be included whenever I was going to publish them. ** includes all files or folders.
You can also see other options here on VisualStudio documentation site.
<ItemGroup>
.... other items
<Content Include="Scripts\dist\**" />
.....other items
</ItemGroup>
You can also do it as,
<Content Include="css\*.min.css" />
<Content Include="js\*.min.js" />
If the files are dynamically created from outside (like webpack), then you can also set it to be invisible or hidden (greyed-out) by:
<Content Visible = "false" Include="Scripts\dist\**" />
Note: Even though you see files are greyed out (as if it was not included), the files will be included when you publish. In my case, it was included when I refreshed my project.
I have a Visual Studio 2019 project. Was asked to make trial changes. Do not want to alter current project. Is there any way to copy a project so I do not have to start over from scratch?
Searched here and other forums and documentation and cannot find solution.
Short answer: you can very simply copy the directory in which your project reside on disk. Open the new directory and double click on the .csproj file and you are now working in your new copy of the project. But, if you want to do that in a more professional and maintainable way, please read on...
The best way to do that in a more robust way is using Git.
In the bottom right corner of Visual Studio find the "Add to Source Control" command, click it, then choose Git. Now the command says "master", that is your main "copy" of the project: in Git, this is called your main "branch".
Now click on it, choose "New branch", give it a name (e.g.: trial), leave the checkbox "Checkout branch" checked, then click on "Create branch". Now the command in the right bottom has changed to "trial".
Now you have another copy of your project: you can work on it, save your work on local disk. When you are ready to save it in Git, press the pencil icon, that is located in the bottom toolbar, on the right, near the command you used before (the number near it shows how many files you have changed): click it, enter a "commit message", then click on "Commit all". Now you have saved all your work in the trial "branch" of your project in Git.
If you want to come back to your initial copy of the project, click on "trial", then choose "master", and voila... your are now working on the old copy or your project. You can switch between the two branches anytime, only remember that, before switching, you have to "commit" your changes, that is, save them in Git, as I explained above.
At some point, you may want to bring the changes you made in trial to master. To do so, when you are working in master, click on master (always in the bottom toolbar, on the right), then choose "Manage branches", then right click on "trial", click on "Merge from...", then click the Merge button: you have now brought the changes made on trial into master. The only problem can arise if you have changed a file both in master and in trial, and the changes are conflicting: in this case, VS will warn you, show you the conflicting changes, and you will have to choose which version of the conflicting changes you want.
If one don't want or can't use git, one can also copy and paste the project folder. Once in the new folder, Here is what I usualy do (I assumed the old project is named "projectOld" and new one "projectNew").
:
rename projectOld.sln to projectNew.sln
open projectNew.sln and change the following line in order to set the new project name :
Project("{C9CE8BB8-8B4A-11D0-5E31-C9100A0BC942}") = "projectNew", "projectNew.vcxproj", "{66F6A241-22E1-4941-6DA3-B6D9E7A8AF86}"
rename projectOld.vcxproj to projectNew.vcxproj
open projectNew.vcxproj and change the lines with the <!-- here --> comments
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[...]
<PropertyGroup Label="Globals">
[...]
<RootNamespace>projectNew</RootNamespace> <!-- here -->
[...]
<ProjectName>projectNew</ProjectName> <!-- here -->
[...]
<ItemGroup>
<ClCompile Include="..\..\..\..\..\IncludePath(1)\ImplementatFile(1).cpp" /> <!-- here -->
[... up to last]
<ClCompile Include="..\..\..\..\..\IncludePath(n)\ImplementatFile(n).cpp" />
[...]
<ItemGroup>
[same thing for every ItemGroups] <!-- here -->
[...]
rename projectOld.vcxproj.filters to projectNew.vcxproj.filters
rename projectOld.vcxproj.user to projectNew.vcxproj.user
one can delete the Debug and X64 folders, they will be created again by mvsc.
Yes, with GIT branching you can create variations of a project easily.
But I think that was not the core of the question asked, because if you create a branch, it is kept separate.
I had a similar scenario where I needed a similar project in the same solution (code first database). A clone of the database project to start with and make some changes for a different database. So in the end I wanted to have 2 databases, not identical but similar, in the same solution.
Adding a new project in the solution and then copying the .CS-Files is possible but cumbersome because of the references and dependencies.
So what I did is:
Close Visual Studio
Open the file explorer and copy the entire folder (e.g. MyProjectA), rename the copy (e.g. to MyProjectB)
Rename the .csproj project file of the copied project MyProjectB. Then open it with a text editor of your choice, to see if you need to adapt anything (for example, project references if you moved it to a different directory level; they usually refer to a different project with a relative path, e.g. <ProjectReference Include="..\SomePathOfADifferentProject\SomeProject.csproj"/>)
Open Visual Studio, load the solution
In the solution explorer, right click on the solution, select "Add existing project...". Now browse for MyProjectB to add it as existing project
and you're done!
If you're using source control like GIT, make sure to check if the clone was correctly added (i.e. check if the files are tracked by source control).
I suggest you go with Project Template inside Visual Studio. You create a project template, store it somewhere, then create a new project by using the stored template. Here are more details
https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ms247121(v=vs.100)?redirectedfrom=MSDN
Using VS 2017 with MVC 5 Razor views. When I publish my application, a handful of specific views do not get copied over.
I'd discovered several SE questions on this same issue from back in the 2010-2011 timeframe. At the time, the issue was that Build Action in the file's properties was not set to Content due to a bug in some early RC which has since been resolved. Well, all of mine already do day Content for Build Action.
Any reason why only a small number of views are not making it in the publish?
As far as I'm aware, there are only 2 things that can cause this to happen.
As you say in the question, the build action for each view needs to be set to "Content"
The view files need to be included in the project file, so in the .csproj file there should be a line like this:
<Content Include="Views\ControllerName\Index.cshtml" />
Another one would be to set this in your csproje file. This was missing in mine, which caused it to make a precompiledviews.dll in my publish:
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
Set it to false explicitely in order to publish .cshtml files.
Visual Studio -> Right click on "Views" in solution explorer. Click "Publish Views". This will set all the views to Content"
Depending on the version of Visual Studio, excluding and then including partial view or its folder may work or not. The most certain way to do it is to remove it from .csproj file and then include it again.
lets say _LoginPartial is not updated after publishing (especially if you have some razor code).
First open '.csproj' file, and remove
<Content Include="Views\Shared\_LoginPartial.cshtml" />
The build the project, and then add it again to .csproj, and rebuild and publish.
Another Solution From Visual Studio
right-click on the file and "Exclude From Project".
select the Project and click on "Show All Files" from Solution Explore (top horizontal menu bar on Solution Explore)
right-click on the file that Excluded and Click on "Include In Project".
This will automatically modify the .csproj file.