Почему мне нужно изменить "internalKeyToken" на "PublicKeyToken" в моем файле resx? - PullRequest
0 голосов
/ 05 декабря 2011

Я перенес файл решения C # из VS 2005 в VS 2010 и на новый компьютер. Одна проблема, с которой я столкнулся, заключается в том, что исходная версия файла ресурсов смешивалась PublicKeyToken и internalKeyToken примерно так:

<data name="NAME" type="System.Resources.ResXFileRef, System.Windows.Forms">
  <value>PATH;System.Drawing.Bitmap, System.Drawing, 
  Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

и

<data name="NAME" type="System.Resources.ResXFileRef, System.Windows.Forms">
  <value>PATH;System.Drawing.Bitmap, System.Drawing,
  Version=2.0.0.0, Culture=neutral, internalKeyToken=b03f5f7f11d50a3a</value>
</data>

Этот файл был сгенерирован Visual Studio 2005 с помощью конструктора, хотя я редактирую его вручную, чтобы изменить экземпляры с internalKeyToken на PublicKeyToken. В противном случае выдается ошибка компилятора:

Error   19  Could not load file or assembly 'System.Drawing, 
Version=2.0.0.0, Culture=neutral' or one of its dependencies. 
The system cannot find the file specified. Line 225, position 5.

Итак, мне интересно:

  1. Почему Visual Studio 2005 несколько произвольно переключался между internalKeyToken и PublicKeyToken? Все файлы в одном формате.
  2. Почему это работало раньше, но теперь выдает ошибку «Не удалось загрузить файл»? Что изменилось?

1 Ответ

3 голосов
/ 05 декабря 2011

Мой хрустальный шар говорит, что у вас был неуправляемый поиск + замена.Вы заменили «public» на «internal» и также случайно изменили файл .resx.Просто исправьте это или восстановите из системы контроля версий.

Даже лучшие собаки делают эту ошибку .

...