问题
I have an Azure solution with 4 projects in it. (VS2012 on Windows 8, Azure Tools 1.8)
- Core project with common code
- Web Role Front End
- Service Role for servicing data (from SQL Azure DB)
- Worker Role for scheduled tasks
All role projects have a reference to the core project with copy local = true... standard stuff.
The web role and the worker role work fine, but my service role keeps getting stuck in the Initializing - Starting - Recycling loop. When I browse to the service I get the 'Could note load file or assembly' FileNotFoundException. Sure enough, RDP to the server and the dll is missing.
Having a look in the package files locally, the other roles include the missing dll, but not the service role.
If I us VS to publish the service role (not azure publish) to local file system, the core dll is included, proving that the VS settings are correct for the copy local.
Is there any other way from within VS to influence the files that are added to the Azure deployment package, or is there a simple way to script the creation of the package without using VS?
回答1:
As I wrote in comment I have same situation as you (Windows 7 and 8, VS 2012, Azure SDK 1.8). Copy Local is set to true but when I open *.cspkg package, referenced assemblies are missing in approot folder. What I did I created new Worker Role project and copied the code from old one. Now are all assemblies included.
UPDATE: The solution described above was not really necessary in my case. The real problem by me was that my Web Role accidentally referenced my Worker Role assembly. When I removed this unnecessary reference, the Worker Role got the all assemblies in package. This behaviour is, on my opinion, buggy.
回答2:
I can confirm what Anton describes in his answer in the paragraph starting with "UPDATE":
I had a class library project called "Utils", a "WorkerRole" and a "WebRole" project. Both WorkerRole and WebRole were referencing Utils. In addition, WebRole was referencing WorkerRole - as latter one contained some classes which were used as Service Bus messages.
The result was that Utils.dll was not included in the .cspkg file for the cloud service, and there was no error message in Visual Studio. After putting the message classes in project Utils and removing the reference WebRole->WorkerRole everything was fine again.
Seems to be a bug indeed.
来源:https://stackoverflow.com/questions/14679174/azure-package-not-including-linked-project-dll-even-with-copy-local-set