TFS doesn't recreated ASP 5 solution DNX wrap folders - asp.net

I have an ASP 5 solution with an Web Api project. I have DNX set up with local dependencies. It creates the wrap folder as I would expect. When another developer gets the latest and builds the solution, it doesn't create the wrap directories as it should. The way we get around it is to remove and add the references back. That will recreate the wrap folders. I could check in the wrap folders but that would mean adding/checking in a new folder every time i want to add a reference. Here is similar post from another site.
http://www.ceus-now.com/mvc-6-can-t-recreate-wrap-folder/

There isn't any setting to configure this for now. You can submit an feedback on Asp.Net - GitHub.
The alternative way for now would be checking in the "wrap" folder into Source Control or create a "Before Build" task or a pre-build event to call dnu wrap command to create the wrap folder like the link you referred.

Related

Adding a project to an existing .net core 3.1 project in visual studio for mac

I have an existing .net 3.1 functions app that I'm trying to add another project to. The current structure shows
Next I right click on the topmost directory (with the EIQT-765) and then select Add -> New Project. I select an xunit project template and add. I end up with this (noting that functions.test is at the root directory, and within the original
After a rebuild at the solution level (again, right click the topmost directory) I am able to add a simple assertion to the initially generated UnitTest1.cs file and right click on the file (in either place it shows in solution explorer) and run the test fine.
When I add some real test stuff that needs to use classes from the app I get a lot of "type or namespace not found errors"
As a freshman .net developer I've solved this in the past with adding a reference to the real project from the test project. I did the same here, Right click on the topmost functions.test folder -> Add -> Reference -> Select the real project.
Not sure if it's relevant, but the test project now has a mono_crash.[string].json file, which doesn't seem good :D.
Next I add the Xunit package to the functions.test project. However, the solution will no longer build unless I add the Xunit package to the real project.
Finally, after all this I have the following error when trying to rebuild the solution
Error CS0579: Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute' attribute (CS0579) which is where I'm currently stuck.
Is this the correct way to add a project to an existing one? Other projects I've worked on were set up as a solution first and I've never had this issue adding additional projects. What do I need to do to fix this?
This issue https://github.com/dotnet/core/issues/4837 leads me to believe I need to rearrange my project structure but I'm just not sure how to do this with a .net project.
This was the same issue in the github thread. In order to fix this I carefully moved things around until I had a structure like this
/FunctionsApp
functionsapp.sln
/FunctionsApp/Functions <-- all the original work went in here, including the .csproj
I then had to manually update the functionsapp.sln with the new path. Afterwards, I could follow the process of Add Project and Add Reference and my tests now run.

Using a solution as a DLL to another (vb.net)

I don't know if there's a way to achieve this, but I have a solution with its references on a single form page (made with ext.net, by the way) and wanted to use it as a reference to another project.
Is this possible?
Edit:
I think it was a poor question afterall. I have a solution with 3 different projects (web, entity and bals) and it's all good there. They all work together for a single form page. Now, I want all of that stuff to be inside another project, which is inside another solution, and call that page with its references from this other solution I'm trying to get it in.
To call an object (or a form) from your original solution in your new solution, you need to add references to Web, Entity and Bals.
There's 2 way to add a reference. You can add a reference to the compiled DLL / EXE or, if you have the source project, you can include the project in your solution (File -> Add -> Add Existing Project) and then add reference to that project.
If I understand your question, you would like to link an entire Solution instead of each projects individually. This can be done by changing the Add Existing Project filter from All Projects Files to Solution Files. This will allow you to import every project from the given .sln file.
However, this is a one shot deal operation that will import the projects at a given time. If you add or remove a project from your original solution after you linked them, you will have to do the same in your new solution.
When adding a reference to a project, you can select another project within the same solution or you can select a compiled DLL. If you have a library project in one solution and an application project in another solution then your only choice is to build the library project and then reference the compiled DLL in the application solution.
That said, there's nothing to stop you adding the same project to multiple solutions. You can add the library project to the same solution as the application project without removing it from its current solution and then you can work on it at the same time as the application, including debugging both at the same time. The application project can then reference the library project instead of the compiled DLL.

"Add as Link" for JavaScript files returning 404 in debug

Using a Visual Studio 2010 ASP.net web application, I have several projects that share some JavaScript/css files. The most logical way for them to share these files is to place the files in a single folder and each project has them included with the "Add as Link" option. However, if I add the files this way when I'm debugging using either the Visual Studio Development server or debugging using a local IIS web server all requests for these files return 404 Not Found errors. If I publish the site then the files are copied but that obviously doesn't help with debugging.
Is there something I'm missing or is this a failing on VS's part?
To overcome this problem some time ago I created a 'MSBuild.WebApplication.CopyContentLinkedFiles' nuget package. This package adds MsBuild target which copies all content files added as link to project folder during build.
Note: if you use source control then it is better to add copied files (from Web Application folder) to ignore list.
I wouldn't really call that a failing, since you asked for that behavior in the first place: linked items in Visual Studio projects are actual links to external files. Those files can reside anywhere on the disk and are not copied into the project folder.
You might want to copy those files locally yourself during a pre-build event. That way, the files will remain synchronized and you won't duplicate them until your first compile.
The problem seems to be that the website runs right from your source folders, rather than from the bin folder. This means that the file will be missing, whether or not it is copied to the output folder.
It's probable that running from a local or remote web server would not have this problem, though I didn't get that working, and I'd rather not add IIS to my local machine if I don't have to.
Adding a pre-build copy command did work. Note that the current directory will be the bin folder. (You can use cd to echo the current directory to the build window if you want to see it):
If the file is in another solution, your command will look something like (three ..s: one to get out of each of bin, project, and solution folders):
copy ..\..\..\OtherSolution\OtherProject\Scripts\MyJSFile.js ..\Scripts\
If it's in the same solution, but a different project:
copy ..\..\OtherProject\Scripts\MyJSFile.js ..\Scripts
One minor issue is that the link to the file will collide with the new copy of the file, even if you don't add it to your project. As long as you make the link first, it seems to work. If you copied the file first, you'll have to manually delete the copy, and then refresh the solution explorer before before being able to add the link.
Select the link in Solution Explorer and then look at properties window and set Copy To Output Directory to Copy Always. Linked items are set to Do Not Copy by default.
BTW, you can copy many files as links very easily directly from Solution Explorer when using VSCommands 2010 extension.
See this blog post about a simple addition to your project file.
http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx

TortoiseSVN with ASP.net Web Projects - How to manage this?

We're a small team starting to use TortiseSVN to manage our web projects.
I was just wondering what is the best way to manage web projects into Subversion.
As you know a web solution consists of the .sln file as well as all the .aspx files.
Well we noticed when we right click the solution and we select "Add selected projects to subversion". It prompts me to tell it where to store the .sln file. So I give it some path like svn://serverName/CIS/MyWebSiteProject. Cool it just placed the .sln file...so I thought to myself how is it going to store the .aspx files as well.
Within a second I got a second prompt, I thought cool it is prompting me for the .aspx pages. So I tried giving it the path svn://serverName/CIS/MyWebSiteProject/ASPX_Files, but it comes back with an error stating I cannot place this folder within this path. I actually have to go outside of the folder MyWebSiteProject.
Not good cause now I have 2 folders one with the .sln folder and the other with all the .aspx pages and these folders are sitting on:
(sln file):
svn://serverName/CIS/MyWebSiteProject
(aspx files):
svn://serverName/cis/myWebSitePages
This really is not ideal cause I am sitting on the root of CIS with 2 folders for really one solution. Now when I try to check the project out I have to check both folders out.
What makes this even worse is when I do check them out I try to open the .sln file and I get an error that it cannot find the corresponding .aspx files. This seems like too much work, is there an easier way or a recommended way of using tortisesvn/subversion with asp.net web projects ?
While I am sure you have TortoiseSVN installed, it sounds like you are using Ahnk or some other VS SCC plugin to add from within VS.
I would suggest not using the plugin to initally add the solution to SVN, but to use TortoiseSVN in Windows Explorer for your initial check in. This will add your solution directory in its original state.
From that point on, you should be able to use the SCC plugin from within VS without trouble.
EDIT
Ok, after your commment I realize that I was not fully understanding the problem.
If you are dealing with a single project, after you create your solution and project, select the solution in Solution Explorer, go to 'file>save solution as' and save the solution inside the directory where your project file is.
Close the solution and go out to Explorer and use Tortoise to add the directory to SVN. If you have multiple projects/sites, just pick one to hold the solution.
Does that make sense? and from that point you should have no problems with ahnk
The key to successfully using Visual Studio with any source control is to put the solution file in the same path as the rest of the project files.
Usually, I will do something like the following:
\Project\Project.sln
\Project\MainWebSite\*.* <-- All web site files (including .??proj here).
\Project\Library\*.*
Then, I manually put \Project\*.* into source control.
Other options exist, as for my recent projects, I have been using:
\Project\SolutionFiles\Project.sln
\Project\MainWebSite\*.*
\Project\Library\*.*
Again, I manually put \Project\*.* into source control.
I generally find that it is better to set up the repositories for my solutions and projects from within Tortoise SVN. Then use whatever VS plugin that you care for to manage the commits of your pages etc. This gives you a little more control and allows you to get your setup correct from the start.

How to update an asp.net website (just changed files)

I am developing an asp.net website that will need regular updates for source codes and HTML sides. After i have completed the necessary updates, i use the 'publish website tool' and publish the site to my local directory. Then i upload all files to Remote File. Is there any way to fix my site with just changed files. For example if i have updated just 2 files of 84 (HTML or source side), is it possible to update just this 2 files without any problem?
While Visual Studio does offer a few different compiling/build options, I think that you are probably doing everything just fine for a Visual Studio Website project. When I'm working with a website rather than a web application, I will only FTP the files that have changed. For example, if I were to change some HTML tags around within an .aspx page, then only that page would need to be uploaded to the web server. If I change the Page_Load function in the .aspx.cs page, then I will definitely need to get the updated DLL on the web server as well.
I use FileZilla for my FTP tool and there is an option to only upload the changed files. So after you use visual studio to publish your website, you can grab the entire contents of that directory and drag it over to the FTP server location and only update what has changed.
The ASP.NET website project offers an option in the Project properties -> "MSBuild Options" tabpage where you can set "Allow this precompiled site to be updatable".
Setting this option
"Specifies that the content of .aspx
pages are not compiled into an
assembly; instead, the markup is left
as-is, allowing you to change HTML and
client-side functionality after
precompiling the Web site. Selecting
this check box is equivalent to adding
the -u option to the
aspnet_compiler.exe command."
according to the docs.
I've been entirely underwhelmed by the available tools to VStudio. And am instead using Gulp.
Even in 2017 the problem remains.
With gulp you can "watch" directories for changed files, so I have it configured to watch the [bin] folder, along with assets separate from aspx/cshtml files.
That way whenever I change anything, it is instantly copied to my publish folder where I can later zip it up and deploy ONLY the changeset. The script even has a delay so I can delay the copy/upload in situations like bundles where they are generated dynamically and take some time to be fully modified.
The only thing I have to do is clean it up before I start my next milestone, so that the "publish" folder which gulp "auto deploys" to is empty and ready for the next run. Emptying a folder and running "gulp watch" in background seems like a small price to pay for such a needed feature.
I feel like this should be a good item to develop as a vstudio plugin.
Recently I have been forced to move to a windows/C#/.NET/MVC environment from linux/node/angular. Sigh. I found the following solution (next paragraph) elminates the pain caused when using visual studio to "publish" the code. The VS2017 publish process copies every file in the entire application to the web server, even if just one character is changed in one file. This can take over an hour for our moderately sized app.
So here's what I do. I first publish the solution locally (typically to bin/release/Publish/). That takes about 1 minute as opposed to 1 hour to publish to the server. Then, I compare the files between my local Publish directory and the server directory using FreeFileSync. FreeFileSync is amazing -- and free. I have access to the server directory via a windows file share. The compare takes about 15 minutes. I can then see exactly what files are different and need to be pushed. Note, the option I use compares the actual CONTENT of the files, not just the create time. I then use the FreeFileSync sync feature (mirror option) to copy the few files needed to the server. This takes maybe two minutes. So the total operation takes about 20% the time Visual Studio "Publish" takes. But best of all, the actual hit on the prod server is only the two minutes it takes to copy the diff files, rather than the 1 hour outage inflicted by Visual Studio Publish as it slogs along copying each and every file.
It depends on the type of project.
If is a project created with File > New Web Site then is ok to just copy the changed .aspx files (make sure that the corresponding code - .cs - files are also copied).
If the project was created with File > New Project > ASP.NET Web Application then you will need to copy the .aspx files and the compiled project dll (by default the dll has the same name as the project like TestProject.dll) from the bin folder inside the project.
i think you need something http://winmerge.org/
where it will compare files that are changed and upload them.
hope this helps

Resources