Question

Project A references Project B, and Project B references an external DDL (restored using NuGet). The DLL should get copied into Project A's bin folder (along with Project B's DLL):

DLL References Copied To Bin

In my case, when running Project A, I get the following exception thrown:

Could not load file or assembly 'PostSharp, Version=3.2.18.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7' or one of its dependencies. The system cannot find the file specified.

The DLL is not being copied into Project A's bin. All other external references from Project B are being copied across just fine, which is what is confusing for me.

Copy Local is set to true for all references involved. Example:

Copy Local Reference

How do I do this?

Note: Using Visual Studio 2013.

Était-ce utile?

La solution

The options that I found were to:

  • Add a reference to PostSharp in Project A.
  • Add dummy code in Project B so that the compiler would detect that the reference is being used.
  • Add a build event to force copy the DLL.

I don't like any of the above solutions. They are hacks in my opinion and will only make for a more unmaintainable solution in the long run.

I have fixed the problem by using a common output directory. This seems to be a recommended solution by many. I have also experienced much faster build times. See this Stackoverflow post.

Autres conseils

When I ran into this problem it was because I changed a project's name, but did not change the assembly name - it was identical to the assembly name of another project in the solution.

I've added some dummy (unused) code on Project B, making reference to the DLL needed.

Thus, the compiler will guess that it must copy the DLL into project A output.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top