2016-02-11 2 views
3

Когда я добавить или изменить строку в существующий файл Resx соответствующий designer.cs файл становится пустым (0 KB) и проект больше не компилируется: CS0234дизайнер Resx файл остается пустым

об ошибке: Тип или пространство имен «Свойства» не существует в пространстве имен «Hundegger.Gui» (пропущена сборка ссылки?)

Все вроде бы нормально, хотя.

Из файла .csproj:

<Compile Include="Properties\Hundegger.Gui.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DesignTime>True</DesignTime> 
     <DependentUpon>Hundegger.Gui.resx</DependentUpon> 
    </Compile> 

<EmbeddedResource Include="Properties\Hundegger.Gui.resx"> 
    <Generator>PublicResXFileCodeGenerator</Generator> 
    <LastGenOutput>Hundegger.Gui.Designer.cs</LastGenOutput> 
</EmbeddedResource> 

Любые идеи, что может быть не так ??? Файл resx довольно прост. В настоящее время только содержит 10 строк.

Когда-то назад мы преобразовали проект в целевой .net framework 4.5.2 (ранее использовал 4.0).

Другой проект в том же решении (который также был преобразован в 4.5.2) не имеет этой проблемы. Как только строка в файле resx будет изменена/добавлена, файл конструктора будет восстановлен и не будет пустым. Я не вижу разницы в файлах .csproj, касающихся файлов resx.

Am using Visual Studio 2013.

Спасибо!

EDIT - получение где-нибудь !!

Я столкнулся с этим другим вопросом, и это дало мне представление. Visual Studio 2010 doesn't generate Resource (Resx) designer code if file is localized

Похоже, что некоторые расширения в имени файла resx заставляют ВС НЕ генерировать соответствующий файл designer.cs.

Предыдущий вопрос упоминает локализации расширений: FR, EN, DE, и т.д. ...

Однако: Gui имеет тот же эффект.

Если я переименую файл resx в Hundegger.Gui2.resx, тогда все будет работать нормально.

Я могу проверить это, создав пустой проект в VS 2013. Если имя файла resx заканчивается на .gui или .job, тогда файл конструктора не генерируется.

Это должно было измениться не так давно, иначе существующие файлы дизайнеров не были бы сгенерированы.

Поэтому я предполагаю, что во избежание подобных проблем избегайте использования «.». в имени файла resx.

Итак, для нашей цели нам придется переименовывать файлы resx.

+0

Вы на VS 2013 Update 5? – ZoolWay

+0

@ZoolWay да!Это уместно? – santiagoIT

+0

Вы обновляетесь (насколько это касается VS2013) - так что это не должно быть проблемой. – ZoolWay

ответ

11

Я могу воспроизвести такое же поведение в VS 2015. Но если вы удалите точку в файле resx, все будет работать нормально. Поэтому, пожалуйста, переход от Hundegger.Gui.resx к HundeggerGui.resx

+7

Также была такая же проблема в 2015 году, за исключением периода и использования тире для обозначения языка ресурсов, т. Е. Т. Е. (WebResources.jp.resx -> WebResources-jp.resx). По крайней мере, Visual Studio выводит полезное сообщение, чтобы вы знали, что это происходит ... просто шутите! – X3074861X

+0

VS использует точку для определения культуры. Поэтому будьте осторожны, что вы хотите сделать. Файл конструктора пуст, когда VS обнаружил «базовый» файл resx или ожидает, что он будет существовать. Все это связано с «спутниковыми сборками», которые используются для локализации. – uli78

+0

Кто-нибудь нашел настоящее решение? как указано в @ uli78, добавление тире не решает проблему –

2
Yes, Designer resx file remains empty. 
you should follow the below steps, it will work 100%. 
1) Create Resource.resx file under any folder 

2) set CustomTools = PublicResXFileCodeGenerator and 
Build Action = Embedded Resource in Resource.resx file property. 

3) Now create the different language files like below, 
Resources.en-US.resx 
Resources.nl-NL.resx etc 

4)If MVC, in your MVC Model refer this namespace as project.folder 

5) change the one of the property as below (example) 

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}"), Display(Name = "dtMovinDate",ResourceType = typeof(Resources.Resource))] 
       public DateTime dtMovinDate { get; set; } 

6) 

    In config file add this under System.web 

     <globalization enableClientBasedCulture="true" culture="en-US" uiCulture="en-US" /> 

7) rebuild the project and test it. 

It will work. The real reason of designer.cs file empty is resource designer.cs will refer these files based on your web.config file.