我正在尝试将旧的 .net 框架项目转换为具有两个目标框架 - 4.8.1 和 8.0,但我不断收到此构建错误:
找不到类型 程序集中的“System.Resources.NeutralResourcesLanguageAttribute” 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework 4.8.1\Facades\System.Runtime.dll'.'
我尝试删除 bin 和 obj 目录,重新启动 Visual Studio 等,但无法修复它。该属性位于 .net 4.8.1 中,因此不确定为什么它不起作用。
这是我的 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
<UseWpf>true</UseWpf>
<Deterministic>false</Deterministic>
<PlatformTarget>x64</PlatformTarget>
<Platforms>x64</Platforms>
<AssemblyName>JacobsRevitTools</AssemblyName>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<TargetFrameworks>net481;net8.0-windows</TargetFrameworks>
<StartAction>Program</StartAction>
<StartProgram>c:\Program Files\Autodesk\Revit 2025\Revit.exe</StartProgram>
<Nullable>disable</Nullable>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<DefineConstants>$(DefineConstants);REVIT2019;REVIT2020;REVIT2021;REVIT2022;REVIT2023;REVIT2024;REVIT2025</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EPPlus" Version="7.4.0" />
<PackageReference Include="Extended.Wpf.Toolkit" Version="4.6.1" />
<PackageReference Include="NUnit" Version="4.2.2" />
<PackageReference Include="SmartFormat.NET" Version="3.5.0" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.1" />
<PackageReference Include="System.Drawing.Common" Version="8.0.8" />
<PackageReference Include="System.Resources.ResourceManager" Version="4.3.0" />
<PackageReference Include="System.Runtime.Caching" Version="8.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JacobsToolsCommon\JacobsToolsCommon.csproj" />
<ProjectReference Include="..\JacobsToolsUI\JacobsToolsUI.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="AdWindows">
<HintPath>..\..\..\..\..\..\Program Files\Autodesk\Revit 2025\AdWindows.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="RevitAPI">
<HintPath>..\..\..\..\..\..\Program Files\Autodesk\Revit 2025\RevitAPI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="RevitAPIUI">
<HintPath>..\..\..\..\..\..\Program Files\Autodesk\Revit 2025\RevitAPIUI.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Settings.Designer.cs">
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<None Update="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
</Project>
由于字数限制,我无法以评论的形式回复您。如果以下方法对您有用,也可以标记为答案:
设置 NeutralResourcesLanguage 类型有两种方法。我建议您尝试以下两种方法之一,看看问题是否仍然出现:
1:在AssemblyInfo.cs中添加代码:
using System.Resources;
[assembly: NeutralResourcesLanguage("en")]
2:在.csproj中添加内容:
<PropertyGroup>
<NeutralLanguage>en</NeutralLanguage>
</PropertyGroup>
此外,当我尝试将旧框架项目升级到新的两个目标框架——4.8.1和8.0项目时,并没有出现与您相同的情况。您的问题出现在 v4.8.1 中。我建议您将此目标框架更改为v4.8或其他.NET Framework版本,看看问题是否仍然出现。