如何解决引用针对多个框架C#WPF的项目时出现构建问题
我正在将大型WPF解决方案的项目转换为SDK样式,并遇到了一些问题。
该解决方案很大,有多个项目(旧样式),所有项目都针对.net452,并且安装了一些nuget(某些由我制造),同时针对.net452和.netstandard2.1 一切似乎都工作正常,以某种方式nuget设法安装了针对.net452的正确版本。
我决定像解决方案一样,慢慢地将解决方案中的项目转换为以.net452和.netstandard2.1为目标的SDK样式。
这是问题开始的地方,到目前为止,一个项目已转换,并被多个其他项目引用。 在本地,一切似乎都可以正常构建和运行,但是当使用Azure DevOps(VS版本2019)构建解决方案时,有两种方案:
-
显示著名的错误消息:
“错误CS0012:类型'Object'是在未引用的程序集中定义的。您必须添加对程序集'netstandard,Version = 2.1.0.0的引用”
-
它可以正常运行,但是在应用启动时崩溃:
“无法加载文件或程序集'netstandard,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一。系统找不到指定的文件。”
我怀疑问题与引用SDK项目有关,看起来它以某种方式引用了.netstandard2.1而不是.net452。
我怀疑的原因是,如果在引用的项目上将targetframework设置为仅.net452,则一切正常。 Google为我提供了两种可能的解决方案,可以从参考中告诉项目使用什么框架:
<ProjectReference Include="..\..\..\..\foo\foo.csproj"
AdditionalProperties="TargetFramework=net452">
<Project>{xxxxxx-xxxxxx-xxxxx-xxxxx-xxxxxxx}</Project>
<Name>foo</Name>
</ProjectReference>
和
<ProjectReference Include="..\..\..\..\foo\foo.csproj">
<SetTargetFramework>TargetFramework=net452</SetTargetFramework>
<Project>{xxxxxx-xxxxxx-xxxxx-xxxxx-xxxxxxx}</Project>
<<Name>foo</Name>
</ProjectReference>
这看起来好像没有做任何事情,问题仍然存在。 目前,我没有任何想法,我在这里寻求帮助。请让我知道我做错了什么,或者我还能尝试什么。
解决方法
我发现了问题。问题是我在AzureDevOps中设置了输出目录。项目的构建完成后,所有内容均复制到此处,首先是.net4.5.2目标DLL,然后使用netstandard2.1 dll进行覆盖。为了避免任何人遇到此问题,请让编译器默认将文件放入根项目,然后将其复制到所需的任何位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。