我有一个仅包含自定义控件的程序集。我通过将旧的.csproj
文件替换为以下文件来将该项目从VS2015升级到VS2017:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
</Project>
我接着打开了项目,并添加了缺失的引用(System.Design 和 System.Windows.Forms)。我还删除了 AssemblyInfo.cs 文件。
然后我在“属性”标签中设置了包信息并构建了一个 NuGet 包,在我的 WinForms 应用程序中发布和使用。请注意,在“包信息”标签中,我将 "Assembly neutral language" 设置为 "invariant",但在关闭和重新打开属性标签后,它会恢复为 "none"。 我还将其设置为特定语言。
该程序集有自己的 resources.resx 文件,并设置为 Embedded resource。一些用户控件也有单独的 resx 文件,它们也被设置为 Embedded resource。
但是,当打开一个使用一个或多个自定义控件的窗体时,我收到以下错误消息:
“找不到适用于特定区域性或中性区域性的任何资源。请确保 'ControlsAssembly.MyControl.resources' 版本已正确地嵌入或链接到 'ControlsAssembly' 程序集中进行编译,或者所需的所有卫星程序集都可加载并完全签名。”
请注意,在项目仍处于 VS2015 时,发布包一切正常。问题是在将项目升级到 VS2017 后立即出现的。
另外,请注意,在 VS2017 中,“MyControl.designer.cs”和“MyControl.resx”文件与“MyControl.cs”处于同一级别,而不是在其下方。
项目有什么问题?我漏掉了什么吗?