7

Obecnie używam Microsoft Code Contracts w aplikacji ASP.NET MVC bez żadnych problemów, ale nie mogę sprawić, aby działało poprawnie w podstawowej witrynie sieci Web ASP.NET. Nie jestem do końca pewien, czy został stworzony do pracy z tego typu projektem (choć nie powinno to mieć znaczenia), więc chciałem go przybliżyć wszystkim.Czy kontrakty Microsoft Code mogą być używane z witryną ASP.NET?

Mogę skompilować kontrakty w porządku, ale kod przeskakuje nad nimi, ponieważ zakładam, że nie został włączony na stronie Właściwości, tak jak w innych typach projektów (np. ASP.NET MVC). Poszedłem na stronę właściwości projektu (która wyświetla okno dialogowe zamiast typowej strony właściwości) w mojej witrynie internetowej ASP.NET, ale nie ma tych samych opcji menu i jako takie nie ma sekcji poświęconej do kodowania umów.

Mam również poprawnie włączone umowy kodu Microsoft w projekcie biblioteki klas, którego używam do oddzielenia logiki biznesowej od strony internetowej. Kontrakty kompilują się dobrze, ale gdy umowa zostanie naruszona, generuje dość nieinformacyjny błąd o wartości "Exception of type 'System.ExecutionEngineException' was thrown" bez wewnętrznego wyjątku. Moja umowa określa komunikat do wyświetlenia po naruszeniu, ale nie ma go w wyjątku. Po prostu zatrzymuje wykonanie procesu (który, jak uważam, jest domyślną funkcjonalnością dla Microsoft Code Contracts).

Nie mogę znaleźć nigdzie, co jednoznacznie stwierdza, że ​​dany typ projektu może lub nie może (lub nie powinien) być używany z Umowami, więc chciałem tylko sprawdzić, czy ktoś ma ten problem.

Dzięki za wszelką pomoc!

+0

Masz ten sam problem, czy kiedykolwiek doszedłeś do sedna? – Kieron

Odpowiedz

0

Brzmi to mniej jak umowa, a bardziej jak kwestia kompilacji/konfiguracji. Czy próbowałeś wdrożyć wstępnie zbudowaną stronę internetową? Czy jesteś pewien, że twój kod witryny widzi kod kontraktu? Czy środowisko wykonawcze ASP.NET korzysta z CLR 4.0, czy widzi wcześniejszy plik Microsoft.Contracts.dll? Itp

1

miałem ten sam problem i to w jaki sposób mogę rozwiązać go:

W przywoływanych Class Libraries, kliknij prawym klawiszem myszy -> Właściwości -> kontrakty kodu. Upewnij się, że zaznaczone jest "sprawdzenie umowy". Mój zestaw został ustawiony na "Pełny" Zespół Referencyjny dotyczący umowy: upewnij się, że jest ustawiony na "Utwórz"

Zapisz zmiany.

W referencyjnych bibliotekach klas, które nie zawierają umów w swoim kodzie, ustaw zestaw odniesienia do zamówienia na "Nie buduj".

Następnie w projekcie MVC należy sprawdzić, czy umowy kodowe "sprawdzają umowy". Mój zestaw był ustawiony na "Pełny".

Nadzieja, która pomaga komuś.

Powiązane problemy