Zmiana przestrzeni nazw plików zasobów (resx) i modyfikatora dostępu

W moim webproject używam 4 plików zasobów w moim folderze App_GlobalResources. Jeden z nich (lang.resx) powstał przed moim przyjściem do projektu. Posiada poprawną przestrzeń nazw (WebApplication.App_GlobalResources) i modyfikator dostępu: public.

Z drugiej strony trzy inne pliki zasobów, które właśnie utworzyłem, mają inną przestrzeń nazw (Resources) i modyfikator dostępu (internal) i nie mogę go zmienić w formularzu plików zasobów z Visual Studio, ponieważ jest wyłączony. Jeśli spróbuję to zmienić bezpośrednio w Projektancie.cs plik, modyfikacje są anulowane przy następnym zapisie pliku.

To nie jest krytyczny błąd, ale może być mylące dla innych programistów w projekcie, aby znaleźć różne przestrzenie nazw i modyfikatory dostępu do plików zasobów, których będą używać.

Author: CJBS, 2009-08-26

5 answers

Nie jestem jeszcze do końca pewien, gdzie leży problem, ale mogę powiedzieć, że możesz go rozwiązać, zmieniając narzędzie używane do generowania kodu.

Kiedy próbowałem śledzić Ten artykuł , również natknąłem się na ten problem. Po pobraniu plików źródłowych, jak zasugerował autor, zauważyłem, że plik zasobów, który był już obecny, miał następującą klasę we właściwości "Custom Tool": "PublicResXFileCodeGenerator". Ponadto właściwość "Build Action" została ustawiona na " Embedded Zasobów", ale nie jestem pewien, czy to część problemu.

Każdy nowy plik zasobów, który utworzyłem, używał niestandardowego narzędzia "GlobalResourceProxyGenerator". Po nadpisaniu tego za pomocą wspomnianego "PublicResXFileCodeGenerator"wydawało się rozwiązać problem, niezależnie od prawdziwego problemu.

Zauważyłem również, że obecny plik zasobów był w formacie "2.0", podczas gdy nowe pliki były w formacie" 1.3". Możesz to zobaczyć, gdy otworzysz plik resx za pomocą edytora XML (lub przez za pomocą "open with" z samego visual studio).

Mam nadzieję, że uda Ci się to tak działać, nie jest to jednak idealne. Prawdopodobnie będzie to problem z instalacją Visual Studio 2008 i SP1, czy coś w tym stylu.

Update:

Ten wpis na blogu może również pomóc.

 44
Author: Dave Van den Eynde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-24 07:51:57

Szybka odpowiedź brzmi: po prostu otwórz Właściwości pliku zasobu i zmień Custom Tool Namespace Na przestrzeń nazw, której potrzebujesz. To proste.

 54
Author: Mark Bonafe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-28 09:34:22

LUB możesz zmienić atrybut CustomTool (testowany w VS2010).

Wystarczy otworzyć Właściwości pliku zasobu i Zmień "Custom Tool" z "GlobalResourceProxyGenerator" na "PublicResXFileCodeGenerator", który jest domyślnym narzędziem dla lokalnego pliki zasobów. Następnie musisz zmienić "Build Action" na "Zasób Wbudowany". Możesz również przypisać odpowiednie narzędzie niestandardowe Przestrzeni nazw jak "zasoby" w celu poprawnego dostępu do pliku, ale to nie jest konieczne...

Źródło

 11
Author: Joost Schepel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-26 16:23:25

Resx pobiera przestrzeń nazw w zależności od przestrzeni nazw określonej w konfiguracji projektu Visual Studio. Zaktualizuj swój projekt, aby miał odpowiednią przestrzeń nazw, a resx powinien ją odziedziczyć (nowe na pewno, Nie wiem, czy istniejące zostaną naprawione - powinny).

 6
Author: psychotik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 10:06:40

Modyfikatory dostępu do plików zasobów znajdują się w .csproj;

Zmiana pliku .csproj powinna obejść ten problem.

Poszukaj elementu <Generator> i ustaw jego wartość zgodnie z poniższymi przykładami:

Plik zasobów z modyfikatorem internal wygląda tak,

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>ResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>

Gdzie plik zasobów z modyfikatorem public wygląda tak.

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>PublicResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>
 4
Author: Luis Filipe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 08:59:56