У меня есть проект библиотеки классов, который должен быть нацелен на .NET 3.5 и .NET 4.0, и то, как это делается сейчас, является типичным способом создания отдельных проектов для каждой целевой платформы и связывания файлов в каждом проекте с одним и тем же источником.
Я хотел бы воспользоваться преимуществами нового формата csproj, который появился в проектах .NET Core, потому что с новым форматом csproj многоцелевой таргетинг намного проще.
Я создал новый проект библиотеки классов (.NET Core) и начал пытаться портировать мою существующую библиотеку.
Мне не нужно нацеливаться на .netcoreapp2.0, поэтому мои целевые фреймворки выглядят так
<PropertyGroup>
<TargetFrameworks>net35;net40</TargetFrameworks>
</PropertyGroup>
и у меня есть следующий блок кода, чтобы помочь с странностями .NET 3.5 с новым форматом csproj.
<PropertyGroup>
<FrameworkPathOverride Condition="'$(TargetFramework)' == 'net35'">C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client</FrameworkPathOverride>
</PropertyGroup>
Все идет нормально. Ситуация начала ухудшаться из-за того, что в моей библиотеке классов есть элементы управления WPF. Я получал ошибки компиляции, потому что не мог найти System.Windows
и другие элементы, связанные с WPF.
Я обнаружил, что могу добавлять ссылки на другие сборки Windows, поэтому добавил следующее:
<ItemGroup>
<Reference Include="PresentationFramework" />
<Reference Include="PresentationCore" />
<Reference Include="WindowsBase" />
</ItemGroup>
Это избавило меня от большинства моих ошибок, но теперь я получаю такие ошибки, как The name 'InitializeComponent' does not exist in the current context