2016-01-11 3 views
1

Je solution complexe avec beaucoup de projets d'application Web MVC qui doivent être construits d'une manière spécifique. C'est pourquoi j'utilise un projet de construction personnalisé et un utilitaire msbuild pour créer la solution sur ma machine locale. Le truc, c'est que la solution et tous les projets qui s'y trouvent se construisent avec succès en Visual Studio. Mais lorsque je tente de construire la solution par l'intermédiaire msbuild à l'aide AspNetCompiler je continue à obtenir la même erreur:Impossible de charger le fichier ou l'assemblage lors de la construction en utilisant le compilateur ASP .Net et construire sur mesure projet

ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 'Duke.Owin.VkontakteMiddleware, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

Cette erreur ne semble pas quand je construis solution dans Visual Studio (2013). Essayer de résoudre le problème, je l'ai déjà fait ce qui suit:

  1. Toutes les références existantes dans les projets de ma solution sont configurés pour Copy local = true
  2. Avant chaque version I clair (et supprimer) tous les bin et obj dossiers de mes projets.
  3. J'ai effacé les fichiers temporaires Asp .Net plusieurs fois et avant chaque génération.
  4. Tous les assemblées, le compilateur dit qu'il ne peut pas trouver, sont situés dans le dossier packages.
  5. Essayé pour restaurer les paquets NuGet avant chaque construction:

    • Téléchargé NuGet
    • Activé package NuGet restauration en ajoutant la variable d'environnement EnableNuGetPackageRestore=true
    • Ajouté commande <Exec Command='$(ToolsDirectory)\nuget restore "$(Solution)"'/> à mon projet de construction.
  6. Essayé définir manuellement les références dans la construction du projet: <ItemGroup><Reference Include="Duke.Owin.VkontakteMiddleware"><HintPath>$(PackagesFolder)\Duke.Owin.VkontakteMiddleware.1.2.0.0\lib\net45\Duke.Owin.VkontakteMiddleware.dll</HintPath></Reference></ItemGroup>

  7. Comme il est suggéré here, je modifié manuellement le fichier de projet qui ne parvient pas à construire et ajouté <Private>True</Private> dans chaque noeud Reference qui n'est pas trouvé par le compilateur.

  8. Essayé dll copie manuelle manqués: <Copy SourceFiles="$(PackagesFolder)\Duke.Owin.VkontakteMiddleware.1.2.0.0\lib\net45\Duke.Owin.VkontakteMiddleware.dll" DestinationFolder="$(OutputDirectory)\bin" SkipUnchangedFiles="true" />

Mais, après tout ce qui précède, toujours pas de chance. Y a-t-il d'autres solutions?

MISE À JOUR: Si j'ajoute l'ensemble à GAC il aide réellement, mais certains de mes ensembles sont installés des paquets de la NuGet et ils ne sont pas un nom fort, je ne peux pas ajouter tous au GAC. Et, bien sûr, l'enregistrement de toutes les assemblées dans le GAC n'est pas une solution souhaitable.

+0

Il s'agit d'un problème courant lorsque l'on utilise un environnement de construction situé ailleurs. L'essentiel est que la machine de construction elle-même doit avoir accès à toutes les DLL de votre machine locale.En règle générale, cela signifie que la machine de construction devra soit installer ces DLL ou vous devrez les inclure dans votre assemblage. Qui fait référence à celui-ci? Duke.Owin.VkontakteMiddleware et où est-il trouvé sur votre machine locale? –

+0

@JohnPeters, j'effectue la construction sur ma machine locale. Je n'ai aucun serveur de build. Cette DLL se trouve dans le dossier packages de ma solution et est référencée par l'un des projets. – Dmytro

+0

Avez-vous essayé d'utiliser NuGet pour restaurer les packages de solution avant d'exécuter msbuild? 'nuget restore MySolution.sln' – Diego

Répondre

1

Voir Common Issues With Automatic Package Restore, qui se lit comme suit:

For a custom build .proj, a pre build <Exec> action to restore nuget packages is required. This is not added automatically.

espoir qui aide.

+0

Merci, j'ai essayé ça ... ça n'a pas aidé. Je reçois "Tous les paquets listés dans packages.config sont déjà installés." message lorsque vous essayez de restaurer les paquets avant la construction. Toujours la même erreur. – Dmytro