2017-07-28 2 views
0

Wenn ich meine asp.net-Anwendung in VSTS mit Aspnetcompilemerge entweder in einem Msbuild-Argument oder ein Veröffentlichungsprofil erstellen, erhalte ich den folgenden Fehler :VSTS-Build mit aspnet_merge verursacht Fehler "Das Element 'BuildProviders' kann nicht unterhalb der Anwendungsebene definiert werden"

MyProject\obj\release\aspnetcompilemerge\source\web.config(129,0): Error ASPCONFIG: The element 'buildProviders' cannot be defined below the application level. 
Process 'msbuild.exe' exited with code '1'. 

ich glaube, das zu diesem Abschnitt der web.config in Referenz:

<buildProviders> 
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" /> 
</buildProviders> 

Aber zwei Dinge sind seltsam darüber -

1) Meine Internetrecherche zu dieser Fehlermeldung zeigt Probleme bei der Bereitstellung oder dem Betrieb einer Website auf, aber ich werde nicht bereitgestellt, sondern nur erstellt.

2) Der Build scheint erfolgreich zu sein. Ich kann das Artefakt herunterladen und es auf einem On-Prem-Webserver bereitstellen, und die Ausgabe scheint wie in meinem Veröffentlichungsprofil definiert zusammengeführt worden zu sein.

Irgendwelche Ideen, wie man das löst?

EDIT - Ich konnte diese Situation in einem neuen MVC-Projekt reproduzieren.

Profil veröffentlichen:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <PrecompileBeforePublish>True</PrecompileBeforePublish> 
    <EnableUpdateable>False</EnableUpdateable> 
    <DebugSymbols>False</DebugSymbols> 
    <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption> 
    <UseMerge>True</UseMerge> 
    <SingleAssemblyName>buildprovidertest.PublishedOutput</SingleAssemblyName> 
    <DeleteAppCodeCompiledFiles>True</DeleteAppCodeCompiledFiles> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <publishUrl>C:\Publish\buildprovidertest</publishUrl> 
    <DeleteExistingFiles>True</DeleteExistingFiles> 
    </PropertyGroup> 
</Project> 

ich in der Lage war, es zu verengen, um die <MvcBuildViews> Knoten in der csproj Datei. Wenn das true ist, erhalte ich diese Fehlermeldung. Wenn ich es auf false setze, ist der Build erfolgreich.

das gesamte Erstellungsprotokoll Posting überschreitet die Zeichenbeschränkung für Stackoverflow, aber hier ist das Ende:

2017-07-31T13:43:32.4134567Z Adding file (d:\a\1\s\buildprovidertest\obj\Release\Package\PackageTmp\Web.config). 
2017-07-31T13:43:32.4134567Z Adding ACL's for path (d:\a\1\s\buildprovidertest\obj\Release\Package\PackageTmp) 
2017-07-31T13:43:32.4134567Z Adding ACL's for path (d:\a\1\s\buildprovidertest\obj\Release\Package\PackageTmp) 
2017-07-31T13:43:32.4204577Z Adding declared parameter 'IIS Web Application Name'. 
2017-07-31T13:43:32.4224576Z Adding declared parameter 'DefaultConnection-Web.config Connection String'. 
2017-07-31T13:43:32.4904577Z Successfully executed Web deployment task. 
2017-07-31T13:43:32.4984583Z Package "buildprovidertest.zip" is successfully created as single file at the following location: 
2017-07-31T13:43:32.4984583Z file:///d:/a/1/a 
2017-07-31T13:43:32.4984583Z To get the instructions on how to deploy the web package please visit the following link: 
2017-07-31T13:43:32.4984583Z http://go.microsoft.com/fwlink/?LinkId=124618 
2017-07-31T13:43:32.5184584Z GenerateSampleDeployScript: 
2017-07-31T13:43:32.5184584Z Sample script for deploying this package is generated at the following location: 
2017-07-31T13:43:32.5184584Z d:\a\1\a\buildprovidertest.deploy.cmd 
2017-07-31T13:43:32.5184584Z For this sample script, you can change the deploy parameters by changing the following file: 
2017-07-31T13:43:32.5184584Z d:\a\1\a\buildprovidertest.SetParameters.xml 
2017-07-31T13:43:32.5184584Z PipelineDeployPhase: 
2017-07-31T13:43:32.5184584Z Publish Pipeline Deploy Phase 
2017-07-31T13:43:32.6134809Z CleanupForBuildMvcViews: 
2017-07-31T13:43:32.6134809Z Deleting file "obj\Release\TransformWebConfig\assist\Web.config". 
snip 
2017-07-31T13:43:32.6384579Z Deleting file "obj\Release\Package\PackageTmp\Views\Shared\_LoginPartial.cshtml". 
2017-07-31T13:43:32.6384579Z MvcBuildViews: 
2017-07-31T13:43:32.6384579Z C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v temp -p d:\a\1\s\buildprovidertest 
2017-07-31T13:43:37.9922053Z ##[error]buildprovidertest\obj\release\aspnetcompilemerge\source\web.config(21,0): Error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. 
2017-07-31T13:43:37.9922053Z d:\a\1\s\buildprovidertest\obj\release\aspnetcompilemerge\source\web.config(21): error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. [d:\a\1\s\buildprovidertest\buildprovidertest.csproj] 
2017-07-31T13:43:37.9922053Z Done Building Project "d:\a\1\s\buildprovidertest\buildprovidertest.csproj" (default targets) -- FAILED. 
2017-07-31T13:43:37.9932061Z Done Building Project "d:\a\1\s\buildprovidertest.sln" (buildprovidertest target(s)) -- FAILED. 
2017-07-31T13:43:37.9932061Z 
2017-07-31T13:43:37.9932061Z Build FAILED. 
2017-07-31T13:43:38.0012046Z 
2017-07-31T13:43:38.0012046Z "d:\a\1\s\buildprovidertest.sln" (buildprovidertest target) (1) -> 
2017-07-31T13:43:38.0012046Z "d:\a\1\s\buildprovidertest\buildprovidertest.csproj" (default target) (2) -> 
2017-07-31T13:43:38.0012046Z (MvcBuildViews target) -> 
2017-07-31T13:43:38.0012046Z d:\a\1\s\buildprovidertest\obj\release\aspnetcompilemerge\source\web.config(21): error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. [d:\a\1\s\buildprovidertest\buildprovidertest.csproj] 
2017-07-31T13:43:38.0012046Z 
2017-07-31T13:43:38.0012046Z  0 Warning(s) 
2017-07-31T13:43:38.0012046Z  1 Error(s) 
2017-07-31T13:43:38.0012046Z 
2017-07-31T13:43:38.0012046Z Time Elapsed 00:00:55.07 
2017-07-31T13:43:38.1372049Z ##[error]Process 'msbuild.exe' exited with code '1'. 
2017-07-31T13:43:38.1882046Z ##[section]Finishing: Build solution 
+0

Ich kann nicht reproduzieren dieses Problem mit dem MVC 4 und Web-Formular Projekte (VS2015). (Fügen Sie diesen BuildProvider zum Kompilierungsabschnitt system.web hinzu). Welcher Typ Ihres Projekts? Wie lautet der Detailcode des Veröffentlichungsprofils? Können Sie dieses Problem mit einem neuen Projekt reproduzieren? Können Sie das Detail-Build-Protokoll hier teilen? –

+0

@ starain-MSFT Vielen Dank für Ihre Zeit. Ich habe der Frage weitere Informationen hinzugefügt. Ich habe ein neues Projekt erstellt, um mit den Einstellungen zu spielen und es scheint mit der '' csproj Einstellung zu tun zu haben. –

Antwort

1

Mit dieser Einstellung, können Sie es durch VS nicht veröffentlichen zu 2015.

diesen Code hinzufügen Datei (xx.csproj) zu projizieren:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
    </Target> 
    <Target Name="AfterBuild"> 
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" /> 
    </Target> 

Verwandte thread: TeamCity Build Failure

+0

Das ist es, danke. Ich hätte schwören können, dass meine Konfiguration lokal funktioniert, aber anscheinend nicht. –

Verwandte Themen