2012-11-07 28 views
7

Tôi có một dự án web xây dựng tốt trên Windows 7 mà không có lỗi. Khi tôi nâng cấp lên Windows 8, biên dịch dự án thành một trang web được biên dịch sẽ phát ra lỗi. Biên dịch từ tệp csproj (không tạo trang web) hoạt động tốt. Đây là lỗi thực tế được tạo bởi msbuildmsbuild Lỗi ASPNETCOMPILER ASPNETRUNTIME startIndex

ASPNETCOMPILER: lỗi ASPRUNTIME: startIndex không thể lớn hơn độ dài chuỗi. [Mycsproj.file.here]

Điểm mấu rằng msbuild đang chạy được ném lỗi là

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_compiler.exe - v/-p my.physical.project.path -u my.physical.project.path \ buildartifacts \ CompiledWebsite

tôi đã có thể để có được một stack trace cũng từ chạy aspnet_compiler với thẻ -errorstack và đây là những gì nó tạo ra

[ArgumentOutOfRangeException]: startIndex cannot be larger than length of string. 
Parameter name: startIndex 
    at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) 
    at System.Web.Compilation.DiskBuildResultCache.MarkAssemblyAndRelatedFilesForDeletion(String assemblyName) 
    at System.Web.Compilation.DiskBuildResultCache.CacheBuildResult(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart) 
    at System.Web.Compilation.BuildManager.CacheBuildResultInternal(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart) 
    at System.Web.Compilation.WebDirectoryBatchCompiler.CacheAssemblyResults(AssemblyBuilder assemblyBuilder, CompilerResults results) 
    at System.Web.Compilation.WebDirectoryBatchCompiler.CompileAssemblyBuilder(AssemblyBuilder builder) 
    at System.Web.Compilation.WebDirectoryBatchCompiler.<CompileNonDependentBuildProviders>b__0(AssemblyBuilder assemblyBuilder) 
    at System.Web.Compilation.CompilationUtil.CompileParallel(ICollection assemblyBuilders, Action`1 action) 
    at System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(ICollection buildProviders) 
    at System.Web.Compilation.WebDirectoryBatchCompiler.Process() 
    at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors) 
    at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors) 
    at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel) 
    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) 

Làm cách nào để khắc phục sự cố này? Tôi cho rằng nó có liên quan đến tên lắp ráp do dấu vết ngăn xếp, nhưng tôi không thể cho cuộc sống của tôi tìm ra phải làm gì để sửa chữa nó. ai đó có thể giúp tôi không?

+0

Bạn có tìm thấy giải pháp không? Tôi đang gặp vấn đề tương tự. – Jacob

+0

Nó phải làm với một số mục tiêu biên dịch tùy chỉnh trong giải pháp của tôi. Bởi vì thời gian chạy cho net 4.0 đã được thay thế bằng 4,5 trong win8 sau đó nó đã có một số vấn đề ban đầu. Nó có vẻ là tốt bây giờ, tôi giả định rằng một số cập nhật cho khuôn khổ sửa chữa vấn đề. Hãy thử xóa bất kỳ mục tiêu tùy chỉnh nào khỏi giải pháp của bạn và xem mục tiêu đó có hoạt động hay không. –

+2

Trong trường hợp của chúng tôi, một tệp .ashx bằng cách nào đó là nguyên nhân. Tôi đã xóa đánh dấu cho trình xử lý và thêm nó vào web.config như một giải pháp thay thế. – Jacob

Trả lời

1

Chạy "Clean" theo sau là "Rebuild" bằng Visual Studio. Điều này đã khắc phục vấn đề cho tôi.

+0

Không sửa chữa nó cho tôi: 'Lỗi startIndex không thể lớn hơn độ dài của mảng ký tự ASPNETCOMPILER 0' –

+0

Cố định cho tôi. Tôi cũng phải làm một IISReset –

Các vấn đề liên quan