Saya dapat menjalankan aplikasi Asp.Net MVC 2 saya tanpa masalah di komputer lokal saya. Jalankan / Debug saja.
Tetapi jika saya sudah membuatnya, saya tidak dapat menerbitkannya! Saya harus membersihkan solusinya dan menerbitkannya lagi. Saya tahu ini bukan sistem kritis, tetapi sangat mengganggu. "One Click Publish" bukanlah "Solusi bersih dan kemudian One click publish"
Kesalahan tepatnya adalah sebagai berikut:
Kesalahan 11 Merupakan kesalahan untuk menggunakan bagian yang terdaftar sebagai allowDefinition = 'MachineToApplication' di luar level aplikasi. Kesalahan ini dapat disebabkan oleh direktori virtual yang tidak dikonfigurasi sebagai aplikasi di IIS.
Saya menduga itu ada hubungannya dengan Web.Config di folder Views, tapi mengapa hanya setelah saya membangun sekali sebelumnya. Dan sebagai catatan, aplikasi berfungsi dengan baik setelah dipublikasikan.
Jawaban:
saya memiliki masalah yang sama dengan aplikasi MVC saya. itu membuat frustrasi karena saya masih ingin pandangan saya diperiksa, jadi saya tidak ingin mematikan MvcBuildViews
untungnya saya menemukan posting yang memberi saya jawabannya. pertahankan MvcBuildViews sebagai true , lalu Anda dapat menambahkan baris berikut di bawahnya dalam file project Anda:
Dan buat folder itu bukan di folder proyek Anda. Bekerja untuk saya. Ini bukan solusi sempurna, tapi bagus untuk saat ini. Pastikan Anda menghapus folder paket (terletak di dalam folder obj \ Debug dan / atau obj \ Release ) dari folder proyek Anda jika tidak, Anda akan terus mendapatkan kesalahan.
FWIW, MS tahu tentang kesalahan ini ...
sumber
\obj
jalur), BUKAN MvcBuildViews. Perbedaannya tidak kentara, tetapi signifikan.Saya menghapus semuanya dari folder obj / Debug saya dan itu memperbaiki kesalahan ini. Ini memungkinkan saya untuk pergi dalam
opsi di file proyek saya (yang berguna dengan template T4MVC T4).
Sunting: Hal ini dapat dicapai dengan lebih mudah hanya dengan menggunakan menu "Build" -> "Rebuild Solution" (karena apa yang sebenarnya dilakukan rekondisi adalah menghapus folder obj / Debug dan kemudian membangun solusi).
sumber
Saya menggunakan solusi ini di halaman MS Connect untuk kesalahan ini. Ini membersihkan semua file obj dan temp di bawah proyek Anda (semua konfigurasi) sebelum menjalankan AspNetCompiler.
sumber
rmdir /S /Q "$(ProjectDir)\obj"
ke bagian post build sesuai Microsoft Ticket memecahkan masalah!Masalah ini terjadi ketika ada keluaran proyek web (web.config template atau mempublikasikan file sementara) di folder obj. Kompiler ASP.NET yang digunakan tidak cukup pintar untuk mengabaikan hal-hal di folder obj, jadi malah melempar kesalahan.
Perbaikan lainnya adalah dengan mengeluarkan keluaran publikasi tepat sebelum memanggil <AspNetCompiler>. Buka .csproj Anda dan ubah ini:
untuk ini:
Itu akan menghapus semua web.configs di bawah \ obj, serta semua folder PackageTmp di bawah \ obj.
sumber
obj
folder.<ItemGroup>
tidak valid, tetapi abaikan itu - tetap berfungsi.Jika Anda menggunakan Penerbitan Web, Anda dapat mengatur
MvcBuildViews=false
danPrecompileBeforePublish=true
, yang mengkompilasi sebelumnya setelah salin ke folder sementara (segera sebelum terbitkan / paket).CATATAN:
PrecompileBeforePublish
hanya didukung oleh tumpukan Pipa Penerbitan Web "baru" (VS2010 SP1 + Azure SDK atau VS2012 RTM). Jika Anda menggunakan VS2010 RTM, Anda perlu menggunakan salah satu metode alternatif.sumber
Mengenai solusi oleh jrummell, pengaturannya:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;"
Ia bekerja di VS 2010 , tetapi tidak di VS 2012 . Pada tahun 2012 Anda harus meletakkan:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesWPPAllFilesInSingleFolder;CleanWebPublishPipelineIntermediateOutput"
Sumber:
VS 2010: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.t target
VS 2012: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.t target
sumber
Saya tahu ini telah dijawab tetapi saya hanya ingin menambahkan sesuatu yang menarik yang saya temukan.
Saya telah menyetel "MvcBuildViews" ke false dalam proyek, menghapus semua folder bin dan obj dan saya masih mendapatkan kesalahan. Saya menemukan bahwa ada file ".csproj.user" yang masih memiliki "MvcBuildViews" yang disetel ke true.
Saya menghapus file ".csproj.user" dan kemudian semuanya berhasil.
Jadi pastikan jika Anda mengubah file csproj Anda juga mengubah atau menghapus file ".csproj.user".
sumber
Saya mengalami masalah ini juga, jadi saya membuat Acara Pra-Bangun di properti proyek untuk Membersihkan direktori keluaran (
${projectPath}\bin,${projectPath}\obj\${ConfigurationName}
). Pada proyek lain saya juga mendapatkan kesalahan ini, bahkan dengan acara pembersihan di tempat. Pada proyek kedua saya menyusun tampilan seperti yang tercantum dalam file proyek:Saya mengubah benar menjadi salah, dan tidak lagi mengeluh tentang kesalahan itu, tetapi masih berjalan dengan benar. Saya tidak akan mengklaim saya tahu persis apa yang menyebabkan kesalahan kedua, tetapi setidaknya itu membuat saya bergerak maju untuk saat ini.
sumber
Masalahnya berkaitan dengan file perantara, tetapi ada solusi lain yang terdiri dari membersihkan file perantara tersebut sebelum membangun view.
Solusi ini telah disertakan dalam beberapa versi VS, tetapi saya hanya dapat mengatakan bahwa saya memiliki masalah di Pembaruan VS 2013 5. (Lihat "Hati-hati" di bawah, ini bisa diperbaiki dalam versi ini, tetapi tidak hanya berfungsi di versi saya kasus non-standar).
Saya meminjam solusi dari Error: allowDefinition = 'MachineToApplication' melampaui level aplikasi di Visual Studio Connect.
Solusinya terdiri dari memasukkan baris-baris berikut ke proyek aplikasi web (
.csproj
file) yang menangani penghapusan file perantara yang offedning:Hati-hati: untuk beberapa alasan, mungkin karena saya memasukkannya sendiri ke dalam proyek, target pembangunan saya untuk membangun tampilan dinamai
"BuildViews"
, bukan"MvcBuildViews"
, jadi saya harus memodifikasiBeforeTargets
atribut yang sesuai. Saya juga menyederhanakan target, dengan menghapusPropertyGroup
dan menyederhanakan kondisinya, seperti ini:sumber
Dalam kasus saya, saya melihat bahwa ketika saya memiliki MvcBuildViews dan PrecompileDuringPublish sebagai keduanya benar - itulah yang menyebabkan masalah ini.
Jadi saya menghapus PrecompileDuringPublish dan solusi itu berhasil untuk saya dan saya tidak menghadapi masalah ini sejak itu.
sumber