2016-09-21 34 views
1

最近プロジェクトMVC 5.2.3が更新されました(Nugetを使用)。すべてはローカル罰金構築しますが、私はAppHarborに展開するときに、私は、次のプリコンパイルエラーを取得:ビューのコンパイル中にエラーが発生しましたエラーCS1705:アセンブリが 'System.Web.Mvc、Version = 5.2.3.0'を使用して参照アセンブリより高いバージョンを持っています

ログが示しています

Microsoft (R) ASP.NET Compilation Tool version 4.6.1590.0 Utility to precompile an ASP.NET application Copyright (C) Microsoft Corporation. All rights reserved.

(0): error CS1705: Assembly 'PickemApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

[HttpCompileException]: (0): error CS1705: Assembly 'PickemApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' at System.Web.Compilation.AssemblyBuilder.Compile() at System.Web.Compilation.BuildProvidersCompiler.PerformBuild() at System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) at System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) at System.Web.Compilation.BuildManager.CompileCodeDirectories() at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.PrecompileAppInternal(VirtualPath startingVirtualDir, IEnumerable 1 excludedVirtualPaths) at System.Web.Compilation.BuildManager.PrecompileApp(VirtualPath startingVirtualDir, IEnumerable 1 excludedVirtualPaths) at System.Web.Compilation.BuildManager.PrecompileApp(ClientBuildManagerCallback callback, IEnumerable 1 excludedVirtualPaths) at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List 1 excludedVirtualPaths) at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths) at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback, Boolean forceCleanBuild) at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback) at System.Web.Compilation.Precompiler.Main(String[] args)

Website precompilation failed with exit code 1. Precompilation can optionally be disabled in your AppHarbor application settings

私がチェックしました私のプロジェクトのどこにでもあり、このエラーの原因となるMVC 1への単一の参照を見つけることができません。 MVC 5.2.3を正しく使用するために参照とweb.configを更新したことはかなり確かですが、エラーはそのままです。ここに私のweb.configファイルがあります。私は何かを逃したと確信しているが、何?私はこのサイトのすべての関連する質問を見てきましたが、私のために働いた提案はありませんでした。

web.configファイル

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <configSections> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 

     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
     <sectionGroup name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection, DotNetOpenAuth.Core"> 
      <section name="messaging" type="DotNetOpenAuth.Configuration.MessagingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" /> 
      <section name="reporting" type="DotNetOpenAuth.Configuration.ReportingElement, DotNetOpenAuth.Core" requirePermission="false" allowLocation="true" /> 
      <section name="openid" type="DotNetOpenAuth.Configuration.OpenIdElement, DotNetOpenAuth.OpenId" requirePermission="false" allowLocation="true" /> 
      <section name="oauth" type="DotNetOpenAuth.Configuration.OAuthElement, DotNetOpenAuth.OAuth" requirePermission="false" allowLocation="true" /> 
     </sectionGroup> 
    </configSections> 
    <connectionStrings> 
     <add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=RCPickEm;Integrated Security=SSPI" providerName="System.Data.SqlClient" /> 
     <!--<add name="PickemDBContext" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\PickemDB2.mdf;Initial Catalog=PickemDB2;Integrated Security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />--> 
     <add name="PickemDBContext" connectionString="Data Source=localhost;Initial Catalog=RCPickEm;Integrated Security=SSPI" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <appSettings> 
     <add key="currentYear" value="2016" /> 
     <add key="webpages:Version" value="3.0.0.0" /> 
     <add key="webpages:Enabled" value="false" /> 
     <add key="PreserveLoginUrl" value="true" /> 
     <add key="ClientValidationEnabled" value="true" /> 
     <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
    <!-- 
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367. 

    The following attributes can be set on the <httpRuntime> tag. 
     <system.Web> 
     <httpRuntime targetFramework="4.5.1" /> 
     </system.Web> 
    --> 
    <system.web> 
     <compilation debug="true" targetFramework="4.5.1" /> 
     <authentication mode="Forms"> 
      <forms loginUrl="~/Account/Login" timeout="2880" /> 
     </authentication> 
     <pages controlRenderingCompatibilityVersion="4.0"> 
      <namespaces> 
       <add namespace="System.Web.Helpers" /> 
       <add namespace="System.Web.Mvc" /> 
       <add namespace="System.Web.Mvc.Ajax" /> 
       <add namespace="System.Web.Mvc.Html" /> 
       <add namespace="System.Web.Optimization" /> 
       <add namespace="System.Web.Routing" /> 
       <add namespace="System.Web.WebPages" /> 
      </namespaces> 
     </pages> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <modules runAllManagedModulesForAllRequests="true" /> 

     <handlers> 
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
      <remove name="OPTIONSVerbHandler" /> 
      <remove name="TRACEVerbHandler" /> 
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
     </handlers> 
    </system.webServer> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
       <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
       <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
       <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" /> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 
      </dependentAssembly> 
     </assemblyBinding> 
     <!-- This prevents the Windows Event Log from frequently logging that HMAC1 is being used (when the other party needs it). --> 
     <legacyHMACWarning enabled="0" /> 
     <!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink 
      to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it. 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
       <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
     --> 
    </runtime> 
    <entityFramework> 
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
     <providers> 
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     </providers> 
    </entityFramework> 
    <system.net> 
     <defaultProxy enabled="true" /> 
     <settings> 
      <!-- This setting causes .NET to check certificate revocation lists (CRL) 
       before trusting HTTPS certificates. But this setting tends to not 
       be allowed in shared hosting environments. --> 
      <!--<servicePointManager checkCertificateRevocationList="true"/>--> 
     </settings> 
     <mailSettings> 
      <smtp> 
       <network host="localhost" port="25" defaultCredentials="true" /> 
      </smtp> 
     </mailSettings> 
    </system.net> 
    <dotNetOpenAuth> 
     <messaging> 
      <untrustedWebRequest> 
       <whitelistHosts> 
        <!-- Uncomment to enable communication with localhost (should generally not activate in production!) --> 
        <!--<add name="localhost" />--> 
       </whitelistHosts> 
      </untrustedWebRequest> 
     </messaging> 
     <!-- Allow DotNetOpenAuth to publish usage statistics to library authors to improve the library. --> 
     <reporting enabled="true" /> 
     <!-- This is an optional configuration section where aspects of dotnetopenauth can be customized. --> 
     <!-- For a complete set of configuration options see http://www.dotnetopenauth.net/developers/code-snippets/configuration-options/ --> 
     <openid> 
      <relyingParty> 
       <security requireSsl="false"> 
        <!-- Uncomment the trustedProviders tag if your relying party should only accept positive assertions from a closed set of OpenID Providers. --> 
        <!--<trustedProviders rejectAssertionsFromUntrustedProviders="true"> 
         <add endpoint="https://www.google.com/accounts/o8/ud" /> 
        </trustedProviders>--> 
       </security> 
       <behaviors> 
        <!-- The following OPTIONAL behavior allows RPs to use SREG only, but be compatible 
         with OPs that use Attribute Exchange (in various formats). --> 
        <add type="DotNetOpenAuth.OpenId.RelyingParty.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth.OpenId.RelyingParty" /> 
       </behaviors> 
      </relyingParty> 
     </openid> 
    </dotNetOpenAuth> 
    <uri> 
     <!-- The uri section is necessary to turn on .NET 3.5 support for IDN (international domain names), 
      which is necessary for OpenID urls with unicode characters in the domain/host name. 
      It is also required to put the Uri class into RFC 3986 escaping mode, which OpenID and OAuth require. --> 
     <idn enabled="All" /> 
     <iriParsing enabled="true" /> 
    </uri> 
</configuration> 

ビュー/ web.configファイル

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization"/> 
     <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="currentYear" value="2016" /> 
    </appSettings> 

    <system.web> 
    <httpHandlers> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 

    <!-- 
     Enabling request validation in view pages would cause validation to occur 
     after the input has already been processed by the controller. By default 
     MVC performs request validation before a controller processes the input. 
     To change this behavior apply the ValidateInputAttribute to a 
     controller or action. 
    --> 
    <pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 
    <compilation> 
     <assemblies> 
     <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+1

「System.Web.Mvc」のすべてのcsprojでテキスト検索を行い、どのバージョンが参照されているかを報告できますか?すべてのファイルを検索するには、notepad ++のようなテキストエディタを使用してください。 – wal

+0

@walはい、バージョン5.2.3のみが参照されています。 – chrisofspades

+0

mvc dllを出力ディレクトリにコピーできますか?つまり、copy localをtrueに設定します(または、サーバの出力フォルダにコピーするだけです)。 – wal

答えて

0

これは、問題は私のApp_Codeフォルダーだったことが判明。グローバルヘルパーはApp_Codeの.cshtmlファイルで定義されていましたが、ローカルでビルドする際に問題は発生しませんでしたが、AppHarborでビルドするとエラーが発生しました。私がApp_Codeを削除したとき、すべてがうまく構築されました。

関連する問題