Tên 'InitializeComponent' không tồn tại trong bối cảnh hiện tại


383

Nếu tôi tạo một dự án mới trong Visual Studio 2010 SP1 và chọn "Ứng dụng WPF" và cố gắng xây dựng ứng dụng đã tạo, tôi sẽ gặp lỗi

Tên 'InitializeComponent' không tồn tại trong bối cảnh hiện tại.

Tôi đã gặp một lỗi tương tự sáng nay khi tôi cố gắng xây dựng dự án hiện tại của mình. Hôm qua, tôi không có vấn đề biên dịch và chạy nó.

Tôi đã tạo một dự án mới và gặp lỗi bất cứ khi nào tôi biên dịch dự án. Tôi vừa gửi dự án cho một đồng nghiệp, và anh ta vừa biên soạn mà không có bất kỳ lỗi nào.

Chuyện gì thế?


3
"Lỗi" người dùng này có vẻ dễ giải quyết, chỉ là một định nghĩa đúng x: Class đơn giản. Cho đến khi tất cả đều ổn, nhà phát triển nên chú ý hơn, nhưng nếu không phải lỗi này mà là lỗi ma với cùng một thông báo lỗi thì sao? Tôi đã đọc RẤT NHIỀU cách giải quyết khác nhau từ năm 2012. Nó sẽ giúp VS một thông báo lỗi rõ ràng hơn và KHÓA HỌC một lỗi cho các lỗi ma với cùng một thông báo. Các nhà phát triển kể từ năm 2012 thay đổi cấu hình xây dựng từ các tệp, dự án, sao chép dự án, xóa tệp khỏi thư mục Ứng dụng, khởi động lại VS, v.v. Bravo MS ... lỗi 4 năm và vẫn già đi!
juagicre

2
Đối với bất kỳ độc giả tương lai của câu hỏi này: Vấn đề này dường như có rất nhiều nguồn có thể. Trong trường hợp của tôi, một vài câu trả lời đầu tiên không có ích, nhưng một trong những câu trả lời tiếp theo là chính xác.
MOnsDaR

@MOnsDaR Không gian tên của tệp Designer là vấn đề đối với tôi.
Ctrl S

Mặc dù điều này có thể được gây ra bởi nhiều thứ (Namespace được đổi tên thành \ Loại trang - MSBuild), cuối cùng tôi đã tìm thấy giải pháp cho những gì gây ra nó trong dự án mà tôi đã kế thừa. Trong các tệp .csproj, tôi đã phải thay đổi "ToolsVersion" từ 4 thành 15 (VS 2017).
MrMikeJJ

Câu trả lời:


737

Tôi đã gặp điều này một vài lần và tiếp tục quên những gì gây ra nó. Tôi gặp phải vấn đề này khi tôi đổi tên không gian tên trên mã phía sau tệp nhưng không phải trong XAML.

Vì vậy, hãy kiểm tra nếu bạn đã làm như vậy.

Không gian tên và tên lớp cần khớp vì cả hai đều là một phần của lớp một phần

namespace ZZZ
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
         //...
    }
}

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">

10
Cảm ơn Sean. Tôi đến đây để đăng câu trả lời này ở đây nhưng bạn đã đánh bại tôi với nó. Đây chính xác là những gì đã xảy ra và nó đã giải quyết vấn đề của tôi. Nhận xét của bạn nên được đưa lên cao hơn trong bảng xếp hạng vì nó sẽ giúp tôi tiết kiệm được 15 phút.
Magnum

2
Nếu tên lớp không giống nhau, bạn sẽ gặp lỗi tương tự
reggaeg Ức

2
Đây là câu trả lời. Không chắc tại sao nó không được chọn, nhưng đây là nó và tôi đã chạy vào mã hóa này một số Xamarin.Forms.
Marcus Shockley

1
Khi tái cấu trúc, đảm bảo bao gồm các nhận xét và chuỗi (Visual Studio 2015)
Gabriel GM

3
Đối với tôi (trong Xamarain.Forms) khi sử dụng dự án "Bắt đầu nhanh" được tải xuống từ Azure, đó là khoảng trắng / thụt lề giữa xmlns: x = " schemas.microsoft.com/winfx/2009/xaml " và x: Class vấn đề. Tôi đã xóa cái này và thử lại và nó đã hoạt động!
James

241

Build Action cho tệp .xaml cũng phải được đặt thành "Trang", khi di chuyển tệp xaml giữa các dự án, cài đặt này bị mất (ít nhất là trong VS 2010).


11
Đây là những gì đã xảy ra với tôi. Cảm ơn!
Ignacio Soler Garcia

3
Sau khi dán bản sao, hành động xây dựng xaml thay đổi từ trang sang Nội dung
Roberto

4
Vẫn xảy ra trong Visual Studio 2012 (Cập nhật 2)
gumo

8
Vẫn xảy ra trong Visual Studio 2013
Chris Ray

7
Nghiêm túc ... tại sao Microsoft, tại sao? Bạn có ghét tôi / chúng tôi không?
qwertoyo

106

Đối với những người không có sai sót trong chế độ Debug, nhưng làm có lỗi quy định trong chế độ Release (nhưng dự án chạy tốt), đây là một cái gì đó đơn giản để thử:

  1. Mở tệp XAML tương ứng với tệp xaml.cs vi phạm.
  2. Thực hiện chỉnh sửa - bất kỳ chỉnh sửa nào, như thêm một khoảng trắng ở đâu đó
  3. Lưu file và đóng nó lại

Phương pháp này hiệu quả với tôi trong VS 2015, và theo những người dùng khác, cả năm 2017 và 2019


3
Bạn là anh hùng của tôi ngày hôm nay. Cảm ơn bạn
Peter pete

14
Thật điên rồ, điều này làm việc cho tôi với VS2015. Và nó đã sửa tất cả các lỗi trong tất cả các tệp XAML. Đây là một khoảnh khắc thực sự WTF.
William Denman

5
Dang, tôi chỉ bị bỏng bởi cái này một lần nữa. May mắn thay tôi đã tìm thấy câu trả lời tương tự mà tôi đã bỏ phiếu và nhận xét. Tôi thực sự nên nhưng đây là một ghi chú sau trên màn hình của tôi.
William Denman

3
Tương tự trong VS2017 và điều này đã sửa nó.
Hans

2
Vẫn hoạt động trong VS2019 ...
soulflyman

29
  1. Điều hướng đến thư mục giải pháp
  2. Xóa thư mục \ obj
  3. Xây dựng lại giải pháp

Tôi đã gặp lỗi này trong quá trình tái cấu trúc nơi tôi đã đổi tên một số tệp / thư mục và các tệp * .g.cs cần thiết để được tạo lại.


Có vẻ như tôi có cùng một vấn đề, nhưng điều này không làm việc cho tôi.
LuckyLikey

Làm điều này sau khi kiểm tra xaml của bạn x:Classphù hợp với Namespace.Class.
Jake

tnx. Thủ thuật đơn giản này đã làm điều đó cho tôi.
gil adino

26

Có một lý do rất cụ thể cho việc này, và đó là trong cài đặt dự án. Điều này thường xảy ra bất cứ khi nào bạn cố gắng thêm điều khiển / cửa sổ WPF vào thư viện hoặc dự án lớp .NET 2.0. Lý do cho lỗi này là do dự án không biết rằng nó đang xây dựng một điều khiển hoặc cửa sổ WPF và do đó cố gắng xây dựng nó như một dự án C # 2.0.

Giải pháp liên quan đến việc chỉnh sửa tệp .csproj. Nhấp chuột phải vào dự án gây ra sự cố và chọn Không tải dự án. Nhấp chuột phải vào dự án chưa tải và chọn Chỉnh sửa .csproj. Tệp .csproj sẽ mở và bạn có thể thấy XML. tìm dòng sau:

<Import Project=…..

Nó ở gần cuối tập tin và dòng duy nhất mà bạn có có lẽ là

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Điều này nói với Visual Studio để xây dựng dự án như một dự án .NET 2.0. Điều chúng tôi muốn làm là nói với Visual Studio rằng đây thực sự là một dự án WPF, vì vậy chúng tôi phải thêm dòng sau:

<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

Dòng này sẽ báo cho Visual Studio xây dựng dự án như một dự án WPF. Bây giờ, đáy tệp .csproj của bạn sẽ trông như thế này:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

Lưu tệp .csproj, nhấp chuột phải vào Solution Explorer và chọn Biên dịch lại Tải lại Project Project và đó là xong, bạn đã hoàn tất!


1
Tôi đã thử điều này trước khi tôi viết câu hỏi này và nó không có ích. Tôi nghĩ hơi lạ khi tôi không thể biên dịch dự án mới nhưng đồng nghiệp của tôi có thể ...
user876402

1
Tôi cũng đã thử nó và nó không giúp được gì. Thêm lần nhập mới dẫn đến cảnh báo mới (xem bên dưới) nhưng lỗi ban đầu vẫn còn. "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFX.target" không thể được nhập lại. Nó đã được nhập tại "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.NETFramework.t Target (76,3)". Đây rất có thể là một lỗi tác giả xây dựng. Nhập khẩu tiếp theo này sẽ bị bỏ qua. "
user316117

Tôi cũng đã thử nó và nó không hoạt động ...?
Sizons

Cảm ơn bạn, điều này đã sửa nó cho tôi, trên một dự án tôi đã kế thừa.
MrMikeJJ

22

điều này xảy ra với tôi khi tôi vô tình xóa tham chiếu lớp khỏi định nghĩa xaml:

Tôi đã thay thế

<Window x:Class="myapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

dòng đầu tiên với điều này:

<RibbonWindow 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

Tôi biết đây không phải là câu trả lời cho câu hỏi ban đầu (vì dự án đó được xây dựng trên một máy khác), nhưng thông báo lỗi là như nhau, vì vậy có lẽ tôi sẽ giúp ai đó trong tình huống này.


đây không phải là vấn đề của tôi nhưng nó giúp tôi bản địa hóa nó. Tôi đã có không gian tên mà không có tên lớp sau đó
Rivenfall

Điều này làm việc cho tôi. cảm ơn
Sina thẩm mỹ

Điều này giúp tôi tìm ra vấn đề của mình, trong trường hợp của tôi, tôi đã thiếu dòng x: Class, thêm nó vào cố định cho tôi
apc

18

Bạn có thể gặp lỗi này khi bạn nhập một lớp từ dự án khác hoặc thay đổi đường dẫn của tệp xaml hoặc không gian tên của tệp xaml hoặc phía sau tệp .cs.

Một: Nó có thể có một không gian tên không giống với những gì bạn có trong dự án mới của bạn

namespace TrainerB.MVC.Forms
{
     public partial class AboutDeveloper : ContentPage
     {
          public AboutDeveloper()
          {
               InitializeComponent();
          }
     }
}

Như bạn có thể thấy không gian tên trong tệp đã nhập bắt đầu bằng tên dự án cũ: "TrainerB" , nhưng dự án mới của bạn có thể có một tên khác, vì vậy chỉ cần thay đổi nó thành tên dự án mới chính xác, trong cả tệp .xaml và tập tin .cs phía sau.

Hai:

thay đổi các thuộc tính của tệp .xaml thành:

Xây dựng hành động: Tài nguyên nhúng

Công cụ tùy chỉnh: MSBuild: UpdateDesignTimeXaml

Thuộc tính tệp Xaml

Không gian tên Xaml Sửa lỗi 01

Không gian tên Xaml Sửa lỗi 02


Chúa ơi! thực sự cảm ơn bạn cho giải pháp đó. Tôi đã thử nghiệm mọi giải pháp tìm thấy ở đó và không có gì hoạt động. Các mẹo là trong các thuộc tính của xamltập tin. +1
IgniteCoders

16

Đảm bảo trong tệp xaml

<Page x:Class="Project1.Page1" ...

khớp với tên 'Project1' và tên 'Page1'


Điều này đã giải quyết vấn đề của tôi.
octavian

16

Kiểm tra tệp Designer .

tôi đã có vấn đề tương tự. Trong trường hợp của tôi, nguyên nhân là namespaceFileName.Designer.cs không khớp với (chính xác) namespaceđược sử dụng trong FileName.cs .

Thay đổi namespacecủa FileName.Designer.cs để phù hợp với các FileName.cs giải quyết vấn đề ngay lập tức.


14

Tôi đã có điều này (mặc dù đó là lỗi của tôi rất nhiều và đã được gây ra sau khi tôi sao chép và dán một số mã vào); nó có thể xảy ra khi không gian tên không khớp giữa XAML và mã phía sau

VÍ DỤ

<UserControl x:Class="DockPanel.TreeView" />

và mã phía sau là

namespace NotDockPanel

Điều này khiến tôi phát hiện ra rằng Nhà thiết kế của tôi có một không gian tên không chính xác. Cảm ơn!
Ctrl S

13

Tôi gặp phải điều này trong khi đổi tên một điều khiển người dùng. Cách tôi sửa là bình luận về LaunchizeComponent, xác minh rằng tất cả các tên đều chính xác (xaml và mã phía sau), xây dựng dự án, bỏ ghi chú LaunchizeComponent, sau đó xây dựng lại. Có vẻ như có thể có một vài nguyên nhân / giải pháp cho vấn đề này, nhưng cách này đã làm điều đó cho tôi.


1
Tôi đã không đổi tên bất cứ điều gì? Tuy nhiên giải pháp này đã làm việc cho tôi. * .G.cs và * .gics bị thiếu trong thư mục obj, nhận xét nó và xây dựng dự án tạo ra các tệp bị thiếu. Không chắc làm thế nào nó đã vào trạng thái này.
finlaybob

11

Không có câu trả lời nào ở trên làm việc cho tôi. Tôi đã thử tất cả chúng ngoại trừ những cái trùng lặp. Tuy nhiên vì một số lý do kỳ lạ, điều này đã làm việc trong dự án đa nền tảng của tôi trong Visual Studio 2015:

  1. Bấm chuột phải vào dự án gây ra sự cố trong Solution Explorer. Trong menu bật lên, chọn: Thêm -> Lớp
  2. Chọn đa nền tảng -> Trang Xaml. Giữ tên tiêu chuẩn đẹp của Page1.cs và nhấp vào Thêm.
  3. Lưu ý rằng vấn đề LaunchizeComponent () trước đó đã biến mất vì một số lý do.
  4. Xóa Page1.cs mới được tạo và tiếp tục lập trình như thể Visual Studio đang hoạt động tốt.

Cái này làm việc cho tôi Tôi đã tạo một bản sao và dán và đổi tên của một điều khiển người dùng mà tôi có, khi đó LaunchizeComponent () bắt đầu không thành công.
Rafael Ventura

Làm thế nào trên trái đất bạn đã vấp ngã trên sửa chữa này? Tôi đã thử mọi thứ khác và điều này đã làm việc. Sử dụng VS 2017, vì vậy vấn đề là hiện tại.
blearyeye

Tuyệt vời, điều này được làm việc cho tôi. Cảm ơn bạn rất nhiều
IZI

9

Tôi đồng ý với câu trả lời ở trên rằng các không gian tên phải khớp. Tuy nhiên, tôi đã gặp một vấn đề như thế này khi các không gian tên khớp với nhau.

Để khắc phục, tôi chỉ cần thay đổi không gian tên trong XAML thành một TUYỆT VỜI, được lưu, sau đó thay đổi lại thành không gian ĐÚNG. Voila!


Tôi đã có thể thêm điều này như một nhận xét cho câu trả lời đúng, nhưng tôi không có đại diện để làm như vậy :(
heights1976

Cám ơn vì cái này! Làm việc cho tôi sau khi phát điên thử tất cả các loại. Giải pháp của tôi đã được xây dựng ban đầu mà không có lỗi, sau đó sau khi PC ngủ một lúc thì thử lại và nhận được lỗi. Có lẽ một cái gì đó để làm với chế độ ngủ?
JeremyB

Tôi đã có cùng một vấn đề và giải pháp. Tôi tin rằng nó có liên quan đến IntelliSense. Thay đổi không gian tên trong xaml có thể đã kích hoạt cập nhật các phần có liên quan trong IntelliSense db. Đây chỉ là một dự đoán mặc dù.
FishySwede

8

Nếu bạn đang sử dụng Biểu mẫu Xamarin và bạn di chuyển tệp XAML, "hành động xây dựng" của tệp sẽ bị thay đổi. Các hình thức Xamarin yêu cầu "xây dựng hành động = Tài nguyên nhúng".

Áp dụng "xây dựng hành động" trong Visual Studio:

Select the XAML file -> Properties -> Build Action = Embedded Resource


Hoan hô cho bạn thưa ông / bà!
naspinski

7

Tôi thử tất cả các đề xuất ở trên. Nếu bạn cố gắng quá mà không thành công có được cách dễ dàng hơn. Tạo một trang mới.xaml sau đó sao chép mã của bạn cho lớp mới và xóa lớp XAML có vấn đề. Đừng dành nhiều thời gian hơn.


7

Dỡ bỏ toàn bộ giải pháp và sau đó tải lại. Sau đó xây dựng lại giải pháp. Điều này giải quyết vấn đề cho tôi.


Cảm ơn đã làm việc cho tôi!
Izion

6

Một nguyên nhân phổ biến khác của lỗi này là nếu bạn đã làm gì đó trong việc này:

  1. Nhấp chuột phải vào thư mục trong dự án để tạo UserControl mới. Điều này tạo ra một lớp và tệp xaml xuất phát từ sự kiểm soát của người dùng trong không gian tên của thư mục.

  2. Sau đó, bạn quyết định thay đổi không gian tên của lớp vì bạn thực sự chỉ đang sử dụng các thư mục để tổ chức mã. Thuộc tính x: Class sẽ không được cập nhật tự động nên nó sẽ tìm kiếm một lớp không tồn tại. Có thể sử dụng một thông báo lỗi tốt hơn như "x: Loại lớp không thể tìm thấy trong tên không gian bla.blaa.blaaa."


5

Một giải pháp khác cho vấn đề này là chỉ cần thay đổi thuộc tính-> Xây dựng hành động trên XAML từ Tài nguyên nhúng sang bất kỳ thứ gì khác, lưu, sau đó thay đổi lại ngay thành Tài nguyên được nhúng. Lỗi biến mất.


Nó hoạt động hai lần;)
Flou

4

Tôi biết điều này đã được trả lời do một nguyên nhân khác nhau, nhưng đây là một bài đăng rất thành công và tôi đã gặp vấn đề tương tự với một thư viện lớp. Trong trường hợp này, hóa ra đó là cả một sự thay đổi trong không gian tên của tôi (đã trả lời trong bài viết này ở đây ) và trình biên dịch không thể xây dựng lại Window.gics định nghĩa phương thức InitializeComponent (). Không thể vì thư viện lớp bị thiếu giá trị ProjectTypeGuid cho các dự án WPF trong tệp csproj. Hướng dẫn cho điều này là ở đâyở đây . Tôi nghĩ rằng tôi sẽ chia sẻ trong trường hợp người khác gặp phải vấn đề tương tự. Chỉ thay đổi không gian tên là không đủ trong trường hợp này.


3

Điều này xảy ra với tôi vì trình gỡ cài đặt gói Nuget đã thổi bay tất cả các thuộc tính trên phần tử <Application> trong App.xaml. Điều này bao gồm thuộc tính x: Class, chỉ định tên lớp ứng dụng. Vì vậy, lớp một phần có chứa phương thức InitializeComponent () không bao giờ được tạo.

Tôi đã khắc phục sự cố bằng cách hoàn nguyên App.xaml thành bản sao được kiểm soát nguồn.


Tôi đã gặp lỗi tương tự do thiếu thuộc tính x: Class, nhưng nó không liên quan gì đến Nuget. Nó chỉ biến mất bằng cách nào đó, có lẽ là một số phép thuật phòng thu hình ảnh.
Ismail Degani

3

Điều này đã giải quyết nó cho tôi.

Tôi đã nhận xét các tài nguyên trong tệp App.xaml

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <!--<ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>-->
  </Application.Resources>
</Application>

Nhận xét thiis trở lại để sửa lỗi xây dựng.

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

Tìm hiểu sâu hơn một chút tôi thấy rằng tệp app.g.cs trong {Project} \ obj \ debug chỉ chứa nội dung sau khi tôi để lại tài nguyên đã nhận xét.

/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
    if (_contentLoaded) {
        return;
    }
    _contentLoaded = true;
    System.Uri resourceLocater = new System.Uri("/MyApp;component/app.xaml", System.UriKind.Relative);

    #line 1 "..\..\..\App.xaml"
    System.Windows.Application.LoadComponent(this, resourceLocater);

    #line default
    #line hidden
}

3

Đối với những người tìm thấy điều này trên internet. Kiểm tra tệp Windows.csproj nếu quá trình biên dịch ở đó. Cần có 2 mục

<Page Include="YourFile.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>

Trong csproj của tôi, tôi đã bỏ lỡ <DependentUpon>YourFile.xaml</DependentUpon>vì một số lý do và đây là điều đã sửa nó cho tôi!
Isaac Baker

3

Nếu không gian tên là chính xác thì cũng có lỗi tương tự,

Chỉ cần đóng ứng dụng của bạn và mở lại .

Điều này có thể giải quyết vấn đề của bạn


mở và đóng cửa studio trực quan, ý bạn là gì?
LuckyLikey

Đôi khi, XDesProc.exe (Microsoft Visual Studio XAML UI Designer) sẽ dừng Visual Studio hoạt động bình thường và sẽ không tải tệp xaml đúng cách. Vì vậy, Khởi động lại Visual Studio đã giải quyết vấn đề của tôi. (Bạn cũng có thể truy cập các Quy trình trong Trình quản lý tác vụ và chỉ dừng quá trình đó mà không khởi động lại Visual Studio).
Syed Siraj Wajeed

Tôi phát hiện ra điều này trong VS2017. Tôi đã thay đổi mọi thứ khác và các không gian tên chính xác ở mọi nơi nhưng các lệnh gọi LaunchizeComponent () có lỗi và các từ khóa một phần trong các tệp xaml.cs có cảnh báo, đại loại như "lớp một phần chỉ có một tệp". Tôi tình cờ đóng và mở lại giải pháp và phát hiện ra cả hai vấn đề này đều tự giải quyết.
Steve Crane

3

Sau một số hành động, không gian tên của tệp .cs và một trong tệp .xaml có thể khác nhau (trong xaml hãy tìm x: Class = "namepace.yourType").

Sửa chúng là như nhau.


3

Tôi đã phát hiện ra rằng "Đối tượng khởi động" là (Không được đặt) gây ra lỗi này cho tôi.

"Đối tượng khởi động" (Không được đặt)


Tất cả các chi tiết cụ thể khác được đề cập trong câu hỏi là như nhau?
marklark 18/03/2016

2
Các chi tiết chính xác không chính xác khi xem xét câu hỏi không rõ ràng về cách thức ngoại lệ biểu hiện. Tuy nhiên, triệu chứng cơ bản là giống hệt nhau do đó tôi không thấy có gì sai với câu trả lời của mình. Ý định của tôi là thêm vào cuộc trò chuyện vì không có câu trả lời / bình luận nào giúp ích trong trường hợp của tôi. Tôi chỉ cố gắng thêm vào cơ sở kiến ​​thức cho các lần biên dịch lỗi không thường xuyên.
Rock

1
Cảm ơn! Nó giải quyết vấn đề của tôi! Dường như đưa ra tùy chọn ( Startup object ) là thiết lập lại tự động khi tôi di chuyển MainWindow.xaml từ rootđể Viewthư mục.
AlexMelw

3

Vì đây dường như là chủ đề của vấn đề liên quan đến việc thiếu 'LaunchizeComponent', tôi sẽ bao gồm câu trả lời của tôi ở đây.

Tôi cũng gặp phải vấn đề này và tôi đã thử mọi thứ tôi tìm thấy ở đây và trong tất cả các Diễn đàn khác mà Google có thể tìm thấy, tuy nhiên không có vấn đề nào giải quyết được cho tôi. Sau hai giờ cố gắng mọi thứ, cuối cùng tôi cũng đã tìm ra điều gì không ổn với mình thiết lập .

Trong dự án của chúng tôi, chúng tôi đang sử dụng các thành phần Metro từ MahApps . Chế độ xem gây rắc rối cho tôi là chế độ xem được kế thừa từ MetroWindow, như thế này:

<Controls:MetroWindow x:Class="ProjectNamespace.MyView"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      ... >

Bây giờ, tôi đã định nghĩa tài nguyên tĩnh của mình là

<Controls:MetroWindow.Resources>
    <prop:Resources x:Key="LocalizedStrings"/>
    ...
</Controls:MetroWindow.Resources>

Đó là cách tôi đã xác định Tài nguyên trong UserControl tất cả các quan điểm khác của mình, vì vậy đó là những gì tôi giả định sẽ hoạt động.

Đó là, tuy nhiên, không phải là trường hợp với Controls:MetroWindow! Ở đó tôi hoàn toàn cần định nghĩa tài nguyên như sau:

<Controls:MetroWindow.Resources>
    <ResourceDictionary>
        <prop:Resources x:Key="LocalizedStrings"/>
        ...
    </ResourceDictionary>
</Controls:MetroWindow.Resources>

Vì vậy, vấn đề của tôi, tóm lại, là một <ResourceDictionary>thẻ bị thiếu . Tôi thực sự không biết tại sao điều này tạo ra lỗi 'InitializeComponent' và thật kỳ lạ là nó thậm chí không tạo ra nó trên mọi máy của tôi, nhưng đó là cách tôi sửa nó. Hy vọng điều này sẽ giúp (0,001% còn lại của những người gặp phải vấn đề này).


2

Tôi vừa gặp phải vấn đề này, và hóa ra dự án của tôi được lưu trữ trong thư mục người dùng của tôi, được lưu trữ trên mạng và chúng tôi đã bị mất mạng tạm thời. Tôi đã làm một bản dựng; nó phàn nàn rằng các tệp của tôi đã bị sửa đổi bên ngoài trình chỉnh sửa (chúng không có; khóa tệp chỉ bị hỏng) và nó được xây dựng tốt, loại bỏ lỗi liên quan đếnInitializeComponent() phương thức.

BTW, trong trường hợp bạn đang tự hỏi, phát triển một cái gì đó từ ổ đĩa mạng là một thực tế tồi. Nó trở nên đặc biệt có vấn đề khi bạn đang cố tận dụng mã được quản lý của .NET; theo kinh nghiệm của tôi, nó kỳ dị mỗi khi bạn xây dựng. Tôi đã quên đặt dự án nhỏ này vào thư mục thích hợp và cuối cùng phải trả giá.


2

Một cách giải thích khác là bạn đang xây dựng so với x86. Nhấp chuột phải vào Giải pháp của bạn và chọn Trình quản lý cấu hình. Xem nếu bạn đang xây dựng dựa trên x86 thay vì CPU bất kỳ.


2

Vì vậy, tôi nhận ra đây là một câu hỏi cũ hơn, nhưng chúng tôi đã có một vấn đề tương tự. Chúng tôi đã có thể xây dựng một dự án bằng VS2012, nhưng không sử dụng msbuild từ dòng lệnh. Tôi đã đi vào tệp .proj và nhận thấy nó không có bản ghi cho "ProjectTypeGuids" trong phần "Thuộc tính nhóm" mặc định, vì vậy tôi đã thêm vào đây:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

đó là dự án GUID cho WPF. Sau đó tôi đã xóa và thêm lại UserControl và nó bắt đầu hoạt động. Tôi không chắc liệu tôi có phải làm bước cuối cùng không, nhưng bây giờ nó hiệu quả với tôi.


2

Vì một số lý do sau khi sao chép .xaml và .cs giữa các dự án, hành động xây dựng đôi khi thay đổi. Vui lòng đảm bảo rằng hành động xây dựng của .xaml của bạn là Trang.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.