问题
I know there is another question with exact the same problem, but I went trough all those answers, and none helped me. :( (This was the question.)
I just created a new ASP.NET MVC project and joined a few '.dll's in the solution. Now when I try to build the project I get the error message shown below on 3 of the 5 libraries.
Error CS0006 Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found Logic C:\Users\...\source\Logic\CSC 1 Active
Error CS0006 Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found PTS2-MVC C:\Users\...\source\PTS2-MVC\CSC 1 Active
Error CS0006 Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found PTS2-MVC.Tests C:\Users\...\source\PTS2-MVC.Tests\CSC 1 Active
When I go to the bin\debug folder of that .dll, I see that it is empty, and the other .dll where I do not get an error message, is not empty. But I am clueless how to fix this or what I did to make this happen.
The most common answer is to go to the properties of the solution and go to configuration and uncheck -> apply -> check and apply again, but that didn't work
回答1:
The problem was that I had some other normal error messages in my project, and apparently after I fixed those and when I cleaned and built my project AGAIN, then all .dlls succeeded.
Make sure you don't have any other error messages in your project and if you do, fix those first!
回答2:
Steps in Fixing this Error: MetaData File .dll could not be found.
Clean All Projects.
Unload All Projects.
Reload All Projects.
ReBuild Solution.
Then problem solved.
回答3:
In my case, there was an error, but it was not properly parsed out by VS and shown in the "Error List" window. To find it, you much view the ol "Output" from build window and parse through the messages starting from top down and resolve the actual error. M$, please fix! This is a huge waste of time of the worlds collective developers.
回答4:
Double check the name of your project folder. In my case my project folder was named with spaces in it. When I cloned the project from Team Foundation Server using git bash the spaces in the folder name were converted to: "%20". Changing those back to spaces fixed the problem for me.
回答5:
I had this issue with a solution containing multiple projects.
It came from duplicating a .csproj and adding the copy to the solution. A .csproj file contains a <ProjectGuid>
element. I set the GUID of the copied project to a new one.
Update: Which GUID you use doesn't matter, it just needs to be different from the other project's GUID. You can create a new GUID from within Visual Studio: Tools -> Create GUID
and copy the part between the curly brackets, i.e. {...}
. Use that as the new value for the <ProjectGuid>
element.
I also performed the following steps (not neccessarily neccessary, but they don't hurt):
- Close the solution
- Delete bin folder
- Delete all obj folders
- Open solution and build
回答6:
I fix this problem following this steps:
- Clean Solution
- Close Visual Studio
- Deleting /bin from the project directory
- Restart Visual Studio
- Rebuild Solution
回答7:
I have the same problem, the problem was that solution path have spaces in the name and vs for some reason not resolve the package... download my repository again just renaming the solution with out spaces in the name.
e.g:
/Repo/Project Name/src
should be
/Repo/ProjectName/src
回答8:
For me cleaning and building didn't work. Unloading the project didn't work. Restarting Visual Studio or even the pc didn't work. This is what did work:
Go to each of the projects that are throwing the error, and in References, delete the reference to the problematic project and add it again. That solves the issue.
The problem seems to be related to moving a project around (Move it inside a folder for example), then a different project that references it, have its path wrong and can't find it.
回答9:
I had the same problem, even with no other errors showing on the "Error List" view after "Rebuild Solution". However, on the "Output" view, I saw the error that was behind the issue:
The primary reference "C:...\myproj.dll" could not be resolved because it was built against the ".NETFramework,Version=v4.6.1" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5"
Once I corrected this, the issue was resolved.
回答10:
Another thing that you should check is the Target Framework of any referenced projects to make sure that the calling project is using the same or later version of the framework.
I had this issue, I tried all of the previously suggested answers and then on a hunch checked the frameworks. One of projects being referenced was targeting 4.6.1 when the calling project was only 4.5.2.
回答11:
Running this command in bash to delete all bins worked for me
$ find . -iname "bin" -o -iname "obj" | xargs rm -rf
Can't guarantee it'll work for anyone else though
Also be aware it'll delete all bin files -so you will have to rebuild all projects. Obviously best to cd into the relevant directory before using it.
回答12:
Cleaning my solution caused this problem with Visual Studio 2017. Unloading/reloading projects or more cleaning made no difference. Only thing that worked was closing and restarting Visual Studio.
回答13:
Check all the projects are loaded. In my case one of the project was unloaded and reloading the project clears the errors.
回答14:
In my case, I had to open the .csproj file and add the reference by hand, like this (Microsoft.Extensions.Identity.Stores.dll was missing):
<Reference Include="Microsoft.Extensions.Identity.Stores">
<HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>
回答15:
Close Visual Studio, find the solution's .suo file, delete it, reopen Visual Studio.
回答16:
What worked for me:
Package Manager Console (Visual Studio 2019 Comunity):
Install-Package NuGet.CommandLine
nuget locals all -clear
Rebuild solution.
回答17:
In my case I was facing same error. One of my project solution was referring an assembly from different NuGet location. I just changed it to correct location to solve this error and rebuild. and wow the project get build successfully and all other error gone away.
回答18:
I had this same error. In my case I had built a library (call it commsLibrary) that referenced other libraries by including them as projects in my solution. Later, when I built a project and added my commsLibrary, whenever I would build I got the metadata file cannot be found error. So I added the libraries that my comms library referenced to the current project, then it was able to build.
回答19:
After facing so many troubles, here is the solution that I found.
- open your project folder.
- find Your_Project_Name.csproj[Visual C# Project file (.csproj)]
open that file in any text editor and find your missing file ItemGroup.
<ItemGroup> <None Include="..." /> </ItemGroup>
remove that ItemGroup and open once again your project and build
- If that reference is important for you then add once again.
回答20:
I had the same problem and i tried solutions from Metadata file '.dll' could not be found
but none of these worked.
So after trial and error i fixed it by unloading and reloading the project doing this reset the configuration file and fixed the issue.
回答21:
I have build 10 projects out of 25 projects in solution individually one by one based on dependencies. Then build the solution. It fixed for me
回答22:
I had the same issue. My problem was someone else on the team moved a class folder, and the project was looking for it.
For me, there were 44 errors; 43 ended in .dll (searching for a dependency) and the first one in the error list ended with .cs (searching for the actual class). I tried clean-build, and clean, unload, reload, build, but nothing working. I ended up locating the class in the project, and just deleted it, as it was showing up as unavailable anyways, followed by a clean-build.
That did the trick for me! Hope this helps.
回答23:
I had 2 files (and 2 classes) in the same project with the same name.
回答24:
In my case, I deleted one file directly from team explorer git menu which was causing this problem. When I checked solution explorer it was still showing the deleted file as unreferenced file. When I removed that file from solution explorer, I was able to build project successfully.
回答25:
For me what worked was:
Uninstall and then reinstall the referenced Nuget package that has the error.
回答26:
In my case I run the tests and got error CS0006. It turned out that I run tests in Release mode. Switch to Debug mode fixed this error.
回答27:
This issue happens when you renamed your solution and the .net framework cannot find the old solution.
To resolve this, you need to find and replace the old name of solution and all dependencies on it with the new name. If you need to browse the physical file through file explorer do so.
The files that are normally affected are AssemblyInfo.cs
, .sln
an Properties > Application > Assembly
name and Default namespace. Make sure to update them with the new name.
Open the file explorer, if the folder with the old name still exists, you need to delete it. Then clean and build the solution until the error is gone. (If needed clean and build the project one by one especially the affected project.)
回答28:
In my case the issue was, I was referencing a project where I commented out all the .cs
files.
For example ProjectApp references ProjectUtility. In ProjectUtility I only had 1 .cs
file. I wasn't using it anymore so I commented out the whole file. In ProjectApp I wasn't calling any of the code from ProjectUtility, but I had using ProjectUtility;
in one of the ProjectApp .cs
files. The only error I got from the compiler was the CS0006 error.
I uncommented the .cs
file in ProjectUtility and the error went away. So I'm not sure if having no code in a project causes the compiler to create an invalid assembly or not generate the DLL at all. The fix for me was to just remove the reference to ProjectUtility rather than commenting all the code.
In case you were wondering why I commented all the code from the referenced project instead of removing the reference, I did it because I was testing something and didn't want to modify the ProjectApp.csproj
file.
来源:https://stackoverflow.com/questions/44251030/vs-2017-metadata-file-dll-could-not-be-found