Je suis en train d'ajouter une tâche de génération de post pour exécuter le Ajax Minifier (ajaxMin.exe) à chaque fois qu'une version de construction d'un projet est exécutée. J'ai ajouté le code au projet pour compresser tous les CSS et JavaScript, mais quand le déclenchement d'une accumulation sur le serveur TFS construire, je reçois beaucoup d'erreurs de construction dans le BuildLog.txt avec le message:Erreur d'autorisation lors de la réduction de JS/CSS à partir de la sortie MSBuild
erreur: Le Microsoft Ajax Minifier n'a pas la permission d'écrire à JS [nom] .js
Je reçois un message pour chaque JavaScript et le fichier CSS et assez loking à juste titre à la sortie de la construction, aucune minification n'a eu lieu. Le projet est sous le contrôle de la source, mais je pensais être une tâche post-construction, cela n'aurait pas d'importance car il minimise la sortie sur le serveur de construction, pas les fichiers source eux-mêmes? Le code ajouté à mon .csproj est la suivante:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" />
<Target Name="AfterBuild" Condition=" '$(ConfigurationName)'=='Release' ">
<ItemGroup>
<JsFilesRelease Include="**\*.js" Exclude="**\*.min.js" />
<CssFilesRelease Include="**\*.css" />
</ItemGroup>
<AjaxMin JsSourceFiles="@(JsFilesRelease)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js"
CssSourceFiles="@(CssFilesRelease)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css" />
</Target>
Est-il possible que je peux contourner cette restriction? Je veux m'assurer que tous les fichiers en sortie de ce qui précède sont minifiés et il semble que ce soit seulement les permissions qui l'empêchent.
Merci
C'est très bien. Même s'il ne devrait jamais y avoir JS dans le répertoire \ js et css dans le répertoire \ stylesheets, s'ils se trouvent ailleurs, ils seront également minifiés. Nous travaillons avec TFS pour le contrôle des sources. – LDJ
Ce que je voulais dire, c'est que votre ** \ *. Js se réfèrerait à vos fichiers sources, qui sont probablement verrouillés avec TFS. Vos fichiers de sortie sont probablement dans un répertoire _PublishedWebsite plutôt. Même s'il s'agit d'une tâche de post-construction, le processus msbuild est exactement le même que celui qui a construit votre site Web, il est donc probablement démarré dans le répertoire où se trouve votre fichier de solution. Exécutez-vous la construction à partir de Visual Studio? Quelle est la valeur de MSBuildProjectDirectory? –