Při programování narazím sem tam na situaci kdy Visual Studiu prostě nerozumím. Potom strávím několik hodin Googlením a hledáním řešení, které mě po jeho objevení většinou svou jednoduchostí ještě dorazí.
Pokud Vás trápí stejně jako mě při kompilování projektu pro Windows Azure chybová hláška Adresář není prázdný.
Error 150 The directory is not empty.
C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\1.4\Microsoft.WindowsAzure.targets 2854 5 MyCastingAzure
<CSPack
AllowLegacyWebRoles="$(AllowLegacyWebRoles)"
ServiceDefinitionFile="@(TargetServiceDefinition)"
Output="@(PublishServicePackage)"
PackRoles="@(Roles)"
SiteMapping="@(SiteMapping)"
RoleProperties="@(RoleProperties)"
CopyOnly="false"
>
</CSPack>
osvědčilo se mi provést Clean Solution. Ale také to není stoprocentní. Druhá možnost je smazat bin a obj složky v projektu Claud. Tato chyba je nejspíše způsobena neuvolněnou referencí na některý soubor v těchto adresářích. v článku http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/a6bf9d22-22ef-4b49-bb98-f1008c93be30/ jsou popsány prográmky které tyto zámky umí uvolnit.
Správné řešení jsem naše ale až v článku http://social.msdn.microsoft.com/Forums/en-US/windowsazuretroubleshooting/thread/eada815e-7177-469a-9e2d-789fb0828e32/, ve kterém se píše o tom že toto chování způsobuje anti-virový program. Já osobně používám v práci AVG na WIN7.
V souvislosti s tím jsem našel tento příkaz, který smaže obsah adresářů obj a bin. Otázkou je jestli je dobrý nápad ho použít jako Pre-build protože může hodně zdržovat. Jeho problém je v tom že zamčené soubory nedokáže smazat.
del $(ProjectDir)obj\* /F /S /Q
del $(ProjectDir)bin\* /F /S /Q
Můj problém s neprázdným adresářem sice nevyřešil ale poznamenám si ho. Na něco se může hodit.
Jestli potřebujete sestavenou assembly přenést na jiné místo kde ji referencujete tak Vám pomůže ve vlastnostech projektu záložka Build Events kde si můžete přidat příkaz který se vykoná jakmile bude assembly sestavena.
Mě se tato technika hodila při hraní s MEFem, kdy jsem potřeboval aby se assembly dostala do stejného adresáře jako hlavní projekt (pokud nenareferencujete assembly do hlavního projektu tak se tam nezkopíruje). MEF potom při sestavování katalogu modulů prohledává tento adresář kde by assembly chyběla.
Copy /y "$(TargetDir)$(TargetFileName)" "$(SolutionDir)$(OutDir)$(TargetFileName)"
Žádné komentáře:
Okomentovat