Если вы предпочитаете автоматически генерировать файлы * .designer.cs из файлов * .resx при сборке проекта, для нас сработал следующий подход, который также может работать и для вас:
- Закройте ваше решение
- Откройте в виде XML-файла файл проекта, в котором вы хотите автоматически сгенерировать файлы конструктора.Обратите внимание, что вам нужно загрузить его в виде файла XML.Вы не можете редактировать эти настройки на странице свойств проекта.
- Добавьте цель к проекту следующим образом:
<Target Name="GenerateDesignerFiles">
<Message Text="Deleting old Designer Files..."/>
<Delete Files="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).resources')"/>
<Delete Files="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).designer.cs')"/>
<Message Text="Generating Designer Files..."/>
<GenerateResource
Sources="@(EmbeddedResource)"
StronglyTypedLanguage="C#"
StronglyTypedClassName="%(Filename)"
StronglyTypedNamespace="@(EmbeddedResource->'%(CustomToolNamespace)')"
StronglyTypedFileName="@(EmbeddedResource->'%(RootDir)%(Directory)%(Filename).designer.cs')"
PublicClass="true"
>
</GenerateResource>
<Message Text="Generating Designer Files complete."/>
</Target>
Найдите цель с именем "BeforeBuild".Эта цель может быть закомментирована (по умолчанию). Измените цель "BeforeBuild" следующим образом:
<Target Name="BeforeBuild">
<CallTarget Targets="GenerateDesignerFiles"/>
</Target>
Это решение основано на том, что все файлы ресурсов перечислены как "EmbeddedResource "в ItemGroup файла проекта, например,
<ItemGroup>
<EmbeddedResource Include="Resources\Creditor\Display_Creditor.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Display_Creditor.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.Creditor</CustomToolNamespace>
</EmbeddedResource>
<EmbeddedResource Include="Resources\InboundEmail\Tooltip_InboundEmailDetails.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Tooltip_InboundEmailDetails.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.InboundEmail</CustomToolNamespace>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Creditor\Tooltip_CreditorDetails.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Tooltip_CreditorDetails.Designer.cs</LastGenOutput>
<CustomToolNamespace>Acme.Web.Resources.Creditor</CustomToolNamespace>
</EmbeddedResource>
</ItemGroup>
Отказ от ответственности: это было протестировано с проектами Visual Studio 2013 и C #.Он может работать или не работать для других проектов и / или других версий Visual Studio.