When we run ASP.NET through the debugger it runs in a special directory like:
C:\Program Files\Common
Files\Microsoft Shared\DevServer\10.0
I dont know if this directory is configureable. The problem is that if you have a file such as Transfer.xsl then you set its property "Copy to Output Directory" to "Copy if newer". This copies the file out to the bin.
But, we are not running inside the bin. So if I use a relative path
StorageFolder\Transfer.xsl
It becomes...
C:\Program Files\Common
Files\Microsoft Shared\DevServer\10.0\StorageFolder\Transfer.xsl
But, Visual Studio does not copy files here even when you set the property described above.
In the past I got around this problem by writing a pre-build routine to xcopy the dependencies to this "temp folder". It works, but flippen sucks caseadillas.
Is there a better way?
In ASP.NET application you could use the App_Data special folder to store files. And when you want to get the full path to this file you use the MapPath method:
string fullPath = Server.MapPath("~/App_Data/Transfer.xsl");
Related
I am getting an error of "Could not load file or assembly 'Microsoft.AI.Web' or one of its dependencies" in the browser of my asp.net app. Microsoft.AI.Web is from Microsoft.ApplicationInsights.Web NuGet package.
I noticed this:
LOG: Appbase = file:///D:/Source/Workspaces/AppName/Branches/Main/Application/WT/
LOG: Initial PrivatePath = D:\Source\Workspaces\AppName\Branches\Main\Application\WT\bin
the dll in question is located at D:\Source\Workspaces\AppName\Branches\Main\Application\packages\Microsoft.ApplicationInsights.Web.2.4.1\lib\net45\Microsoft.AI.Web.dll
As for personal dll's -- In the project-->properties-->build-->output path--> I have it set as "..\Any\Debug\". When I build the project the DLL's populate there.
I checked References and code in .csproj file and all the dll are located where I specified to.
I am not sure why it's trying to look at the bin file of the project when I told the output is somewhere else AND to look for the dlls in that same folder(through references and .csproj file). How do I make it so that VS will look for the dlls in the folder path I want instead of "WT\bin"?
When I change my project output path to "bin", it can detect the dll's there EVEN though the path of the dll remains the same( D:\Source\Workspaces\AppName\Branches\Main\Application\packages\Microsoft.ApplicationInsights.Web.2.4.1\lib\net45\Microsoft.AI.Web.dll).
Since it's a Microsoft strong signed DLL, add it to the server's GAC.
If you place it in the GAC, it'll find the file automatically. Another plus there is that if you need it for another project deployed on the same server, you don't need to deploy it again.
Here's some information on how to install a DLL into the GAC on the server machine, assuming gacutil is not installed there. Look at the accepted answer, not the question.
Drag and drop a DLL to the GAC ("assembly") in windows server 2008 .net 4.0
Copy gacutil.exe and gacutil.exe config from your machine to the server's C:\Windows\Microsoft.NET\Framework\v4.0.30319
Then run on the server:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\gacutil.exe" /i "PATH TO YOUR DLL"
I am trying to publish an ASP.NET web site project using the Publish Web Site tool but get this error:
ASPNETCOMPILER(0,0): Error ASPRUNTIME: The specified path, file name,
or both are too long. The fully qualified file name must be less than
260 characters, and the directory name must be less than 248
characters.
I see that it is trying to copy the files to a very long path in AppData:
Copying all files to temporary location below for package/publish:
C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source.
c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /BMW.Web -p C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\TempBuildDir
I couldn't find anything about this temp directory in my .pubxml publish profile. How can I change the temporary directory that Visual Studio copies the files to?
Add this to your publish profile to modify the temporary directory for package/publish:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
Go to your web project folder, navigate to Properties\PublishProfiles folder.
open your profile file profile_name.pubxml (not the profile_name.pubxml.user)
copy/past <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> under the <PropertyGroup> tag
save your file, you would be able to publish your website using this profil
This is sort of an aside answer, but I ran into this problem when trying to MSBuild a solution that depended on nodeJS and gulp. The problem was that the gulp dependency tree became very deep and the aspnet_compiler was trying to copy that tree to a deeper directory, resulting in this error. I tried everything noted in here but nothing worked.
As it so happened, I was building with TFS, so my solution was to run an attrib +h node_modules\* /S /D before msbuild to hide the directory tree and then attrib +h node_modules\* /S /D. That did it for me.
Sure would be nice if the error thrown in this situation by the compiler revealed the path that caused the write to fail...
try adding this
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
to the default <propertyGroup />
None of the other answers worked for me.
Visual Studio 2013 Community Edition.
I changed the TMP and TEMP environment variable to a short folder name and it worked.
We identified the lengthy files/folders using this solution, then corrected the issue from there:
Run this script at the command prompt: dir /s /b | sort /r /+261 > out.txt it will output all file paths into the out.txt file
Copy the output to an Excel file
In the next column over from what you pasted in add this Excel function: =LEN(A1) where "A1" is the cell, copy this against every file length so you can see how long the paths are
Sort in Excel by the path length
Identify the lengths over the recommended limit
I know this is a bit long-winded but if you have several files that are resulting in this issue you'll be able to see them all.
Even though the content of node_modules was not included in neither version control not in the *.csprojfile itself Deleting the whole node_modules folder did the trick for me.
You can try the selected solution for correcting the long file path issue.
Still if not able to publish due to some other issue, You can try below method.
=> If the 'Solution Configuration' is in 'Debug' mode, please change the same to 'Release' mode and Publish the files.
=> If the Solution Configuration is in Release mode, and if the problem still persists, please try to delete the dll generated earlier in the 'Release' folder of our project and Publish the project once again.
Any of the above method will solve the issue.
For me, using Visual Studio 2019, the only change to the publish profile .pubxml file that worked was:
<WPPAllFilesInSingleFolder>c:\shortPath\</WPPAllFilesInSingleFolder>
I discovered this property at line 484 of Microsoft.Web.Publishing.targets file. Full path was C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Web.
unable to update auto-refresh reference 'ajaxcontroltoolkit.dll and
commonlogging.dll
I am getting this warning every time I build the project but the project is running fine without breaks in local system but I am getting error page in godaddy after uploading to server. is this the reason for 500 error in godaddy shared hosting server?
I had this same problem with the AjaxControlToolkit. I've got no idea what caused it, but by simply re-installing the toolkit into my project with NuGet, that fixed it.
Install the package by following the steps below:
Right-click on your project and select Manage NuGet Packages.
Search the online repository for the package you want. In my case, this was 'ajaxcontroltoolkit'.
Find the package in the list of results that appears and click the Install button on it.
What this does is it removes all previous references of the package (older DLLs and references in your web.config file) and replaces them with newer, correct references
It's that simple.
Hope this helps you
Look in the bin folder of the project - for a file called - in your case:
ajaxcontroltoolkit.dll.refresh
This will have an incorrect path to the dll file. You need to update the path to wherever the dll is now.
Had this same issue and manually creating a .refresh file for its DLL helped. Once I figured the origin of the relative path is the solution folder, and put that in the .refresh, everything worked for this and other references.
I hope this helps somebody...
Im using VS2017 and had an ASP project with 28 Warnings:
Unable to update auto-refresh reference 'XXXXX.dll'. Cannot find
assembly 'F:\Program Files (x86)\Microsoft Web Tools\Packages\…
...well...that directory had been removed!
To make matters worse (or better) when I create a new ASP project the references are handled a little different in solution explorer...and the assemblies referenced in the new project are in C:\Program Files (x86)\Microsoft Visual Studio\Shared
To fix my warnings...I edited the .refresh file.
You can do this by: 1: Double clicking the warning. 2: Navigate to it
in solution explorer under the Bin folder.
And changed (example)
..\..\..\..\..\..\..\Program Files (x86)\Microsoft Web Tools\Packages\AspNet.ScriptManager.bootstrap.3.0.0\lib\net45\AspNet.ScriptManager.bootstrap.dll
to
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Packages\AspNet.ScriptManager.bootstrap.3.0.0\lib\net45\AspNet.ScriptManager.bootstrap.dll
I had the same issue / what solved it for me was simply to do a "Refresh folder" on the Bin folder.
i'm trying to import an excel file into my SQL table , i wrote a lot of codes but in visual studio my computer didn't see my path correctly. Example :
string path = #"~\Uploads\File1.xls"; here is my excel sheet its in the uploads file at my project file.
and i have this error : 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\~\Uploads\File1.xls', is not a valid path.
If your path is relative to your asp.net project, use:
Server.MapPath("~/Uploads/File1.xls");
Otherwise, use the full path
I'm using an msbuild command line script to publish a c# web project from team city out to a live server.
After wrestling with IIS perimisions etc it all works well...
....apart from the fact that the font files end up not being copied to the right directory (they end up on the bin directory)
/t:rebuild
/p:Configuration=Deploy
/p:OutputPath=bin
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://<server>/MsDeploy.axd
/p:username=<username>
/p:password=<password>
/p:AllowUntrustedCertificate=True
/p:DeployIisAppPath=<sitename>
/p:MSDeployPublishMethod=WMSVC
Any suggestions as wo what I can do to force the files to go to the right directory?
Make sure the fonts are included as "Content" by right clicking on them in Visual Studio and selecting properties and changing the "Build Action" to "Content". Also ensure "Copy to output directory" is set to "Do not copy"