2015-10-01 1 views
0

Il y a deux dossiers dans le dossier de la solution (mais pas ajoutés à la solution) que je veux copier à l'approche de ce rôle de travailleur. Ces dossiers contiennent des DLL et d'autres fichiers que je ne veux pas inclure dans la solution et les marquer comme "Contenu". J'utilise Azure 2.4 SDK. J'ai lu sur content element sur msdn et j'ai essayé d'utiliser l'élément de contenu pour y parvenir. Quelque chose comme ci-dessous:Copie à partir d'un dossier (en utilisant un chemin relatif) vers l'approche

<Contents> 
    <Content destination="\EnterpriseLibraries_5_0"> 
    <SourceDirectory path="..\..\EnterpriseLibraries\EnterpriseLibraries_5_0\" />  
    </Content> 
    <Content destination="\EnterpriseLibraries_6_0"> 
    <SourceDirectory path="..\..\EnterpriseLibraries\EnterpriseLibraries_6_0" /> 
    </Content> 
</Contents>  

Cependant, il échoue dans la recherche de répertoire source à chaque fois. Je suis coincé dans la création d'un chemin relatif pour ces dossiers. Dans une seconde approche, j'ai copié ces contenus de dossier en tant qu'activité de post-construction dans $ Outdir. Mais les événements de post-construction n'ont pas d'effet sur ce qui est copié à approcher.

Veuillez suggérer le moyen de réaliser cette copie de contenu externe en utilisant le chemin relatif.

Mise à jour: L'ajout de chemin physique au répertoire source dans l'élément de contenu fonctionne à merveille. Cependant, je suis incapable de créer un chemin relatif, je n'arrive pas à comprendre comment "chemin relatif" est "relatif" à quel dossier. Retour aux problèmes de chemin d'accès relatifs: Il semble que le chemin de base pour le parent ne cesse de changer. Il commence parfois par \\ bin \ debug, si je crée un chemin relatif en prenant ce chemin de base lors de la prochaine construction \ devient en quelque sorte le chemin de base.

Je garde l'erreur s'aime lors de la construction pour le chemin:

Essayez 1: ServiceDefinition.csdef (0,0): CloudServices089 d'erreur: Impossible de trouver le répertoire source « D: \ a \ b \ c \ d \ aa \ aa \ bin \ Debug .... \ ExternalLib \ EnterpriseLibraries_5_0 \ 'dans le rôle WCFWorker.

Essayez 2: ServiceDefinition.csdef (0,0): erreur CloudServices089: Impossible de trouver le répertoire source 'D: \ a \ b \ c \ d \ aa \ aa ....... \ ExternalLib \ EnterpriseLibraries_5_0 \ 'dans le rôle WCFWorker.

Répondre

0

Une solution pour obtenir un chemin complet au moment de la construction est possible en utilisant un hack:

Dans votre fichier ccproj, vous pouvez définir des variables d'environnement en utilisant le SetEnvironmentVariableTask défini dans https://stackoverflow.com/a/20014410/413672 comme indiqué ci-dessous:

<Target Name="BeforePackageComputeService"> 
    <SetEnvironmentVariableTask Name="CCPROJ_DIR" Value="$(MSBuildThisFileDirectory)" /> 
</Target> 

Enfin, référencez la variable %CCPROJ_DIR% dans l'attribut path de votre élément XML SourceDirectory.