2012-09-12 3 views
4

Avec Visual Studio 2010, j'ai utilisé le dossier _bin_deployableAssemblies pour inclure des assemblys tiers qui doivent être inclus dans le dossier bin lors de la génération et du déploiement Web. Il s'agit des assemblages de tierce partie qui sont nécessaires pour le site Web, mais vous ne voulez pas les référencer. Cela a fonctionné génial ...Utilisation de _bin_deployableAssemblies avec Visual Studio 2012

Maintenant avec Visual Studio 2012 il a cessé de fonctionner ... Eh bien, une partie de celui-ci a cessé de fonctionner. Lorsque je compile, le contenu du dossier _bin_deployableAssemblies est copié dans le dossier bin. Mais lorsque j'exécute webdeploy, par exemple sur mon disque local, ces fichiers ne sont pas publiés dans le dossier bin du dossier de sortie.

J'utilise dans mon fichier .csproj:

<PropertyGroup> 
    <OnAfterCopyAllFilesToSingleFolderForPackage> 
    __MoveFilesFromUmbracoSubdirsToBinPackageTemp 
    </OnAfterCopyAllFilesToSingleFolderForPackage> 
</PropertyGroup> 
<Target Name="_CopyBinDeployableAssemblies" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')"> 
    <CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')" Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\.svn\**\*"> 
    <Output ItemName="_binDeployableAssemblies" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(_binDeployableAssemblies)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /> 
</Target> 
<Target Name="__MoveFilesFromUmbracoSubdirsToBinPackageTemp"> 
    <Message Text="Moving files from bin\umbraco\ and bin\umbraco plugins\ to bin\" Importance="high" /> 
    <CreateItem Include="$(_PackageTempDir)\bin\umbraco\*.*;$(_PackageTempDir)\bin\umbraco plugins\*.*"> 
    <Output ItemName="_umbracoItems" TaskParameter="Include" /> 
    </CreateItem> 
    <Move SourceFiles="@(_umbracoItems)" DestinationFolder="$(_PackageTempDir)\bin" /> 
    <Message Text="Removing bin\umbraco\ and bin\umbraco plugins\ folders" Importance="high" /> 
    <RemoveDir Directories="$(_PackageTempDir)\bin\umbraco;$(_PackageTempDir)\bin\umbraco plugins" /> 
</Target> 

Quelqu'un pourrait-il me aider comment je reçois ces ensembles dans le dossier bin du dossier ouput?

Répondre

3

Merci à Alexey j'ai trouvé la solution à mon problème, voici ce que je utilise maintenant dans mon dossier .csproj pour soutenir la copie des ensembles de tiers pour et Webdeploy: le système de fichier

<ItemGroup> 
    <AvailableItemName Include="ThirdPartyAssemblies"> 
     <Visible>false</Visible> 
    </AvailableItemName> 
</ItemGroup> 
<Target Name="AfterBuild"> 
    <Message Text="Build | Copying third party assemblies to output folder ($(OutputPath))" Importance="high" /> 
    <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> 
</Target> 
<Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish"> 
    <Message Text="Deploy | Copying third party assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" /> 
    <Copy DestinationFolder="$(_PackageTempDir)\bin\" SourceFiles="@(ThirdPartyAssemblies)" SkipUnchangedFiles="true" /> 
</Target> 

de: MSBuild targets and Visual Studio 2012 issues

-2

En supposant que vous ayez Seuls les fichiers nécessaires à l'exécution de cette application sont définis dans les propriétés du projet, assurez-vous que les fichiers sont inclus dans le projet et que leur action de construction est Contenu.

http://msdn.microsoft.com/en-us/library/ee942158.aspx#why_dont_all_files_get_deployed

+2

Malheureusement, cela n'a rien à voir avec ma question ... – kipusoep

+0

Il pourrait si le processus de conversion du projet jusqu'en 2012 ou pour toute autre raison les fichiers copiés dans le dossier bin ne sont plus i inclus dans le projet. Les critères que je liste sont ceux qui déterminent dans VS 2012 si les fichiers seront copiés dans le dossier bin de sortie. – tdykstra

+0

La (les) cible (s) MsBuild que j'ai postée devrait prendre en charge le processus de copie, du moins dans VS2010. Donc, ma question est: ce qui a changé dans VS2012 et comment puis-je le résoudre. – kipusoep

Questions connexes