【发布时间】:2018-04-05 17:08:26
【问题描述】:
我有一个需要针对 .NET 3.5 和 .NET 4.0 的类库项目,现在完成的方式是为每个目标框架创建单独的项目并将每个项目中的文件链接到同一源的典型方式。
我想利用 .NET Core 项目中出现的新 csproj 格式,因为新 csproj 格式的多目标更简单。
我创建了一个新的类库 (.NET Core) 项目并开始尝试移植我现有的库。
我真的不需要定位.netcoreapp2.0,所以我的目标框架看起来像这样
<PropertyGroup>
<TargetFrameworks>net35;net40</TargetFrameworks>
</PropertyGroup>
我有以下代码块来帮助.NET 3.5 oddities 使用新的 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这样的错误
【问题讨论】:
-
您启动了一个针对 .NET Framework 4.0 的 .NET Core 项目?这是没有意义的。此外,.NET Core 上不存在 WPF,因此它更没有意义
-
@CamiloTerevinto 是否有另一种项目类型可以利用新的 csproj 文件格式,让您可以轻松地使用单个项目实现多目标?如果是这样,我会使用它。
标签: c# wpf csproj multitargeting multi-targeting