MVC, niepoprawne ścieżki w pliku *.csproj.

0

Drodzy Koledzy,

zetknąłem się właśnie z dość irytującym problemem polegającym na tym, że w projekcie aplikacji MVC mam w strukturze pliku .csproj odnośniki do widoków, które nie zostały w poprawny sposób usunięte. Są widoczne w Solution Explorerze jako pełnoprawne elementy projektu ale próba ich otworzenia skutkuje takim błędem:
screenshot-20191022204837.png
Po usunięciu pliku z .csproj problem ten znika. Może się on jednak powtórzyć w przyszłości o co nie trudno wobec tego zastanawiam się czy jest możliwość napisania testu jednostkowego, który sprawdzi mi każdy widok w projekcie? A może jest na to inny i lepszy sposób?

Będę wdzięczny za wszelkie wskazówki.
Pozdrawiam,
Dawid.

0

Nie wiem czy doprecyzowałem - chodzi mi o sprawdzenie czy rzeczywiście ścieżka zawarta w csprojce prowadzi do pliku na dysku czy może jest martwa jak w przykładzie wyżej. Pomyślałem, że można by zwyczajnie wyciągnąć informację wczytując w kodzie plik csproj jako tekst i czytając linijka po linijce wszystkie ścieżki zawierające cshtml sprawdzać czy prowadzą do pliku na dysku.
Może jednak jest na to sprytniejszy sposób wykorzystujący moce i ficzery dostarczane bezpośrednio przez mvc?

0

Kontynuując temat napisałem sobie program, który sprawdza mi fizyczną obecność ścieżek i zaciąłem się przy regexie. Otóż z csprojki chcę sobie wyciągnąć ścieżkę względną i np. z takiej:

<Content Include="Areas\JakiesArea\Views\JakisKontroler\JakisWidok.cshtml" />

chcę otrzymać treść pomiędzy cudzysłowami, czyli: Areas\JakiesArea\Views\JakisKontroler\JakisWidok.cshtml
Mam regexa: ".*" i on zwraca mi to co wyżej plus apostrofy: "Areas\JakiesArea\Views\JakisKontroler\JakisWidok.cshtml"
W jaki sposób przebudować regexa żeby zignorował mi apostrofy? Próbuję ułożyć na https://regex101.com/ ale nie mogę trafić.

0

@dawid75_75: użyj tego: "(?<path>.*)", wtedy ścieżka bez cudzysłowów będzie w grupie path.

A najlepiej wczytaj ten plik jako XML i przetwórz w LINQ.

1 użytkowników online, w tym zalogowanych: 0, gości: 1