我正在为另一个基于公共.NET API的程序编写插件.通常,这些插件是通过创建引用API程序集的类库DLL来创建的.然后,通过继承API程序集中的基本命令类来创建命令类.然后将应用程序设置为引用插件DLL文件,然后还负责在用户请求时实际启动自定义命令类.
但是,现在我正在尝试通过自动化代码生成System.CodeDOM
,并且想要创建一个简单的控制台应用程序,该应用程序根据API程序集中的类型自动生成新的类类型.
然而,当我尝试运行我的应用程序时,我得到以下异常.
System.BadImageFormatException未处理消息:无法加载文件或程序集"RevitAPI,Version = 2011.0.0.0,Culture = neutral,PublicKeyToken = null"或其依赖项之一.尝试加载格式不正确的程序.
通常我需要将插件程序集的目标框架设置为3.5.但是现在我发现如果我将控制台应用程序的目标框架设置为2.0,上面的错误就会消失.但是,我的控制台应用程序已经引用了我的目标框架设置为3.5的其他类库.而且我真的不想围绕2.0框架重写它们.
.net revit badimageformatexception revit-api target-framework
我在Visual Studio 2015中创建了一个MVC网站,它可以在我的localhost中运行.但是当我发布我的网站并放入我的主机时,它不起作用.它给了我这个错误通知:
'/'应用程序中的服务器错误.
配置错误
分析器错误消息:Web.config文件元素中的"targetFramework"属性仅用于目标4.0版及更高版本的.NET Framework(例如,'')."targetFramework"属性当前引用的版本晚于安装的.NET Framework版本.指定.NET Framework的有效目标版本,或安装所需的.NET Framework版本.
来源错误:
服务器上发生应用程序错误.此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因).但是,它可以由运行在本地服务器计算机上的浏览器查看.
源文件:G:\ xxx\xxx.com\httpdocs\web.config行:24
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.34248
我的web.config中的相关部分:
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
Run Code Online (Sandbox Code Playgroud)
这部分有错误:
<system.web>
<authentication mode="None" />
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.6" />
<httpRuntime targetFramework="4.6" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
我的网站的属性:
和NuGet包管理器:
EntityFramework参考属性:
默认网站基本设置:(说实话,我不确定是否应该在这里添加一个新网站(我的网站).)
我安装的.net框架:
我的发布方法:
我在互联网上调查了这个问题,我发现了几个与我的问题相关的链接:Asp.net MCV4框架问题.在此链接中,有两个主要优惠:
更改此编译标记
在IIS中更新应用程序池
实际上,我试图改变这个标签,但它没有改变.然后我控制了我的应用程序池,但它似乎是最新的.
我打电话给我的主机提供商,我已经解释了我的问题.他们说这个错误与他们的服务器无关.
我该怎么办?这是什么解决方案?
我已经更新Visual studio 2019
到版本 16.4.0。此版本包括.NET Core SDK
3.1.100。
在那之后,我尝试在Target Framework
2.2的项目中运行一些单元测试,但它无法这样做。它给出了以下错误:
Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException: Testhost process exited with error: It was not possible to find any compatible framework version
The framework 'Microsoft.AspNetCore.App', version '2.2.0' was not found.
- The following frameworks were found:
3.1.0 at [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
Run Code Online (Sandbox Code Playgroud)
如果我转到上述路径,我只找到了一个3.1.0 文件夹。如果我列出已安装的 SDKS,我会得到:
dotnet --list-sdks
2.1.602 [C:\Program Files\dotnet\sdk]
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.701 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk] …
Run Code Online (Sandbox Code Playgroud) 请帮忙。
我已经安装了相当多的框架和开发包。正如你在图片中看到的。
不幸的是我想访问一个古老的项目。该项目在.net framwork 4.5上运行,并且不得升级。
我安装了 Visual Studio 22,但是每当我打开解决方案时,我都会收到以下错误,如下图所示。
目前我已经成功安装了 4.5.2 的目标公园,但没有帮助。
我尝试安装 .net Framework 4.5 运行时,但出现以下错误。
请帮忙
c# asp.net .net-framework-version visual-studio target-framework
我正在学习关于 Pluralsight 的教程,该教程是关于让 MSTest 项目同时针对 .net core 2.2 和 .NET 4.7.2。这需要转到我的测试项目的 .csproj 文件并对其进行编辑,以便执行以下操作:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
...
Run Code Online (Sandbox Code Playgroud)
将更改为 TargetFramework s(现在是复数),然后我们添加 .NET 4.7.2 绰号,如下所示:
<PropertyGroup>
<TargetFrameworks>netcoreapp2.2;net472</TargetFrameworks>
...
Run Code Online (Sandbox Code Playgroud)
一旦我保存了 .csproj 文件,VS 2019 就会在顶部的黄色栏中显示以下错误:
项目在上次操作中遇到问题:“Debug|AnyCPU”配置中“TargetFrameworkMoniker”和“NuGetTargetMoniker”属性的值都为空。此配置不会有助于 NuGet 还原,这可能会导致还原和生成错误。
我究竟做错了什么?
在编译.Net程序集时,有什么方法可以访问用于TargetFrameworkVersion和/或TargetFrameworkProfile的值吗?
我正在谈论的值是包含项目文件的值
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OtherStuff>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<OtherStuff>
</PropertyGroup>
<OtherStuff>
</OtherStuff>
</Project>
Run Code Online (Sandbox Code Playgroud)
基本上我想知道编译程序集时框架的目标版本是什么,以及可能的目标框架配置文件.
我不是在谈论当前加载的CLR版本,Environment.Version不是我想要的.
理想情况下,解决方案将使用System.Reflection,但如果我必须采用其他方法,我会.
给定 Visual Studio 中打开的解决方案,如何快速检查解决方案中的各个项目具有哪些目标框架?是否有一个解决方案范围的视图显示每个项目针对哪个目标框架,或者有多少项目针对每个框架版本的聚合视图?
我知道我可以单独检查每个项目(在属性窗口或文件csproj
本身上),但是在具有 100 多个项目的解决方案中这是不可行的。
此外,我知道我可能可以csproj
在根文件夹中的文件内进行某种正则表达式搜索,但我想知道 Visual Studio 中是否有内置的东西可以提供此数据。
是什么决定了卫星装配的目标框架版本?
查看日志文件,我可以看到通过运行ResGen.exe和Al.exe构建附属程序集,但我无法找出决定生成程序集的目标框架的内容.
背景
我正在尝试解决一个问题,当我在构建服务器上构建它时,卫星程序集成为.NET 4.0运行时的目标,但是当我在开发计算机上编译时,目标是.NET 2.0运行时.该解决方案的其余部分针对.NET 2.0运行时,如果针对.NET 4.0运行时,可执行文件将不会加载附属程序集.
我已经尝试使用构建服务器上的msbuild"手动"构建项目,这也导致了针对.NET 2.0运行时的附属程序集.
当我使用自动构建服务器构建时,我只得到错误的目标运行时版本4.0.
我正在编写一个Xamarin应用程序,我希望将MonoDroidToolkit作为项目添加到我当前的解决方案中.我已经正确完成了这个,我的解决方案也在构建.
我现在需要在我的应用程序中添加一个MonoDroidToolkit项目的引用.
我在References文件夹中选择了"编辑参考"选项.然后,我浏览到项目选项卡以选择项目.该项目列在那里,但由于此描述,我无法选择项目:
com.refractored.monodroidtoolkit(不兼容的目标框架:MonoAndroid,Version = v4.2)
以下是说明的屏幕截图:
我已经将每个项目的目标框架更改为相同并且也是自动的,但是,无论我选择哪个目标框架,由于上面的描述,我都无法添加引用.
我已经对每个项目中的Mono.Android参考进行了检查.在我当前的项目中,描述是版本4.1支持,MonoDroidToolkit是版本4.2支持.
问题是这个吗?如何轻松更新4.1支持参考是最新的?我可以让NuGet这样做,还是有另一种方法来更新我的所有引用?
在.csproj
我的 .NET Core 项目中的文件中,默认有以下 3 行:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
现在,如果我想针对多个框架,我可以将其更改为:
<PropertyGroup>
<TargetFrameworks>netcoreapp2.2;net4.6</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
差异是微妙的,但它就在那里。当针对多个框架时,您必须使用<TargetFrameworks>
(复数)而不仅仅是<TargetFramework>
(单数)。
但是为什么要做成这个样子呢?似乎只选择两者之一会更容易,然后总是使用它。这让我想到,选择不同(尽管相似)的词可能有一个更复杂的原因,这取决于您是否针对更多框架。任何人都可以就这个主题启发我吗?