首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

"[MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)‘:MonoDevelop无效的静态方法调用语法

[MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)') 是一个用于获取目标框架标识符的 MSBuild 静态方法调用语法。MSBuild 是微软开发的构建工具,用于构建和部署应用程序。目标框架标识符是指应用程序所针对的目标框架的唯一标识符。

在这个语法中,$(TargetFramework) 是一个 MSBuild 变量,表示当前项目的目标框架。GetTargetFrameworkIdentifier 方法用于获取目标框架的标识符,即框架的名称。通过调用这个方法,可以获取当前项目所针对的目标框架的名称。

这个语法在 MonoDevelop 中无效,可能是因为 MonoDevelop 不支持直接调用 MSBuild 的静态方法。MonoDevelop 是一个开源的集成开发环境,主要用于开发跨平台的应用程序。它使用的是 Mono 运行时,而不是微软的 .NET Framework。

对于这个问题,可以考虑以下解决方案:

  1. 使用其他适用于 MonoDevelop 的方法:可以尝试使用其他适用于 MonoDevelop 的方法来获取目标框架的标识符。可以查阅 MonoDevelop 的文档或者社区资源,寻找类似的方法或者替代方案。
  2. 手动指定目标框架标识符:如果无法找到适用于 MonoDevelop 的方法,可以手动指定目标框架的标识符。可以根据项目的配置文件或者其他相关信息,确定当前项目所针对的目标框架,并直接将标识符写入代码中。

总结起来,[MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)') 是一个用于获取目标框架标识符的 MSBuild 静态方法调用语法,在 MonoDevelop 中无效。可以尝试使用其他适用于 MonoDevelop 的方法或者手动指定目标框架标识符来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Roslyn 在项目文件使用条件判断 判断不相等判断大小判断文件存在判断多个条件使用的范围

本文告诉大家如何在项目文件通过不同的条件使用不同的方法运行 本文是 手把手教你写 Roslyn 修改编译 的文章,在阅读本文之前,希望已经知道了大多数关于 msbuild 的知识 为了告诉大家如何使用判断...安装文件夹打开开发人员工具命令行,打开这个是因为如果没有将 msbuild 加入到环境变量,就需要使用这个方法来调用 msbuild 调用 msbuild 的原因是为了编译可以看到输出。...在 Target 如果用 Message 的输出,除了设置为错误,其他的输出在 VisualStudio 的输出是无法看到的,只能通过 msbuild 才可以看到。...|就需要添加引号,表示这时字符串 实际的|不是语法,可以换为其他的字符,如下面的代码 现在运行msbuild可以看到输出了123如果修改为'$(TargetFramework

2.7K10
  • 三种方法设置 .NETC# 项目的编译顺序,而不影响项目之间的引用

    方法二:设置解决方案级别的项目依赖 此方法可能会是更加常用的方法,但兼容性不那么好,可能在部分旧版本的 Visual Studio 或者 .NET Core 版本的 dotnet build 命令下不容易工作起来...方法三:使用 MSBuild 编译任务来编译其他项目 1 2 3 4 5 6 7 8 9 10 11 TargetFramework>net48TargetFramework> TargetFramework ⚠是 否 否 占用一个编译时机 否 否 ⚠是 兼容性 ✔️ ⚠早期版本的dotnet build 不支持 ✔️ ✔️优势 ❌劣势 ⚠可能优可能劣(但在本文场景是劣势...net45,netcoreapp3.1 能引用 netstandard2.0,但 net45 不能引用 netcoreapp3.1 占用一个编译时机:在此编译时机之前的依赖是无效的(详见:Visual

    69420

    dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败

    构建时的核心报错信息如下 MSBuild version 17.9.6+a4ecab324 for .NET Determining projects to...,即使我使用了如下命令行,也依然构建失败 dotnet build -c release -r linux-x64 -p:TargetFramework=net6.0 或者是如下命令也是无效的 dotnet...,避免在还原时读取 TargetFramework 找到不受支持的平台而失败 将以上的构建命令换成以下两句命令即可修复问题 dotnet restore -p:TargetFramework=net6.0...参数,用来表示只构建不还原,这是因为咱在上一句命令里面就自己还原了 通过以上的命令手动设置 TargetFramework 可以避免 dotnet restore 时对整体的框架进行还原,导致遇到不受支持的框架平台返回失败...更进一步可以添加上具体的运行时版本,如在 linux 下只构建 linux 的版本,方法是加上 -r 参数,修改之后的命令行如下 dotnet restore -p:TargetFramework=net6.0

    31210

    官宣 .NET 6 RC (Release Candidate) 2

    在项目文件中,使用下面的语法。 在你的项目文件中,使用语句(对于你的应用所依赖的MSBuild SDK)启用默认平台,语法如下。...下面的MSBuild语法可以在(使用与前面示例类似的方法)中代替.cs文件。...这还意味着,如果您向Program类添加额外的方法,使用partial类语法,则partial Program类也需要位于顶级命名空间中。 这个特性非常类似于添加到C# 8中的单行using声明。...WT.mc_id=dev 可空性 我已经更新了Program.cs,用来演示可空的引用类型。应用程序调用List方法,返回一个T?,在本例中是一个可空字符串(string?)...我保持程序不变,但将所有功能切换到 Program 类中的静态方法,在部分类中定义。 Program.cs.

    1.1K10

    Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)

    Analyze 要想访问RPL中的静态资源文件,首先我们要弄明白.NET Core Web项目中wwwroot文件夹的资源是如何访问的。...那对于静态资源文件,ASP.NET Core中是借助StaticFileMiddleware中间件来处理的。...这也就是为什么在启动类Startup的Configure方法中需要指定app.UseStaticFiles();来启用StaticFileMiddleware中间件。...可以借助EmbeddedFileProvider,我们仿照上面的例子,在Startup.cs的Configure方法中添加以下代码: app.UseStaticFiles(); var dllPath...当然这也不是最好的解决方案,因为你肯定不想所有调用这个RPL的地方,添加这么几句代码,因为这段代码有很强的侵入性,且不可隔离变化。 5.

    1.1K20

    dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

    实际上没有那么复杂 在开始之前,请确定你安装好了环境,如何安装请看下面博客 dotnet 在 UOS 国产系统上安装 MonoDevelop 开发工具 dotnet 在 UOS 国产系统上使用 MonoDevelop...创建 GTK 全平台带界面应用 dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用 如 dotnet 在 UOS 国产系统上使用 MonoDevelop 创建...在使用 Xamarin.Forms 的 GTK 应用,有两层入口,第一层是本机程序的入口,也就是 B 项目的 Program 文件的 Main 方法入口,第二层就是 Xamarin.Forms 的 App...{ InitializeComponent(); MainPage = new MainPage(); } } } 上面代码的核心就是在构造方法调用...本文没有给大家一个简单的方法,主要是让大家可以了解更多内容 官方文档请看 GTK# Platform Setup - Xamarin 尽管官方文档里面说的是预览版,但是经过了2年的开发,现在不能的支持的点很少

    2.6K10

    dotnet 通过引用 msbuild 程序集实现自己定制编译器

    本来我想说的是基于引用 msbuild 程序集来自己做一个编译器,但是想想好像本文做的,和造编译器没啥关系,咱自己调用 msbuild 的 API 而已。...本文来告诉大家如何引用 msbuild 程序集,如何在自己的应用程序里面嵌入 msbuild 的构建代码,实现 dotnet build 的效果 大部分的代码都是采用命令行的方式去调用 dotnet build...或 msbuild 命令,然而通过命令行调用用的是跨进程的方式,如果期望做更多的定制化,最好还是放在相同的进程,此时可以更改构建的各个步骤 自己制作一个编译器最简单的方法就是引用现有的成熟的编译器作为组件...使用下面代码注册 msbuild 实例,如果没有使用下面这句代码注册,那么在后续调用 msbuild 相关类型时,将会因为找不到 msbuild 的程序集而失败 // 必须调用...); 注册完成之后,将可以使用 msbuild 提供的各个类来实现构建,请新建一个方法用来编写调用 msbuild 各个类的构建代码。

    76040

    dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架

    很多团队都会因为单元测试的用例函数命名太难而让团队成员不喜欢写单元测试,或者说代码审查的时候觉得对方写的单元测试用例名有语法错误,又或者是改到单元测试时发现函数命名因为自己英文能力有限而看不懂 本文安利给大家的...本 UI 单元测试框架不提供面向测试的辅助类型的方法,例如模拟鼠标点击等功能,如需这些功能,还请使用第三方的库进行辅助 使用方法 此单元测试框架是基于 MIT 最友好开源协议,在 GitHub 上完全开源的...在一个公开的标记了 TestClassAttribute 特性的测试类型里面,存放一个静态的,标记了 AssemblyInitializeAttribute 特性的带有 TestContext 参数的方法...在此函数里面,需要调用 UITestManager 初始化引擎,将自己测试的项目里的 WPF 应用入口的 App 类传入 接下来即可开始编写业务上的单元测试代码,如以下例子 [TestClass...UI 线程执行的,可以放心调用任何的 UI 资源 代码 本文所有代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹

    1K30

    将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj

    然而组织传统 .NET Framework 类库的 csproj 文件却极其庞大且难以理解。而本文将提供一种迁移方法,帮助你完成这样的迁移,以便体验新 csproj 文件带来的诸多好处。...(如果 A 引用了 B,B 引用了 C;那么 A 不需要显式引用 C 也能调用到 C) 可以一边编辑 csproj 一边打开项目,互不影响 可以指定多个开发框架,详见 让一个项目指定多个开发框架 - 吕毅的博客...具体可支持的类型以及迁移方法我的小伙伴写了一篇博客,请前往此处查看:从以前的项目格式迁移到 VS2017 新项目格式 - 林德熙。...目前没有自动的迁移方法,至少在我的实际迁移过程中,只有少数项目能够直接编译通过。由于以上我的小伙伴给出了具体的迁移方法,所以此处我只给出迁移思路。...自动迁移 自动迁移的方法我写了一篇新的博客,请阅读 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference。

    1.5K20

    平台兼容性分析器

    build = 0, int revision = 0) 静态方法,用于安全地调用特定于平台的 API。...如果在面向任何指定平台的项目中引用特定于平台的 API(例如,对于特定于 Windows 的 API 调用,且项目面向 TargetFramework>net5.0-windowsTargetFramework...,且调用站点面向 TargetFramework>net5.0-windowsTargetFramework>),则将生成警告。...将调用站点标记为特定于平台。 还可以选择将自己的 API 标记为特定于平台,从而有效地将要求转发给调用方。 将包含的方法或类型或具有相同属性的整个程序集标记为引用的依赖平台的调用。 示例。...但是,当使用特定于平台的 API 时,如非绝对必要,请勿使用此选项。 使用保护方法保护特定于平台的 API 保护方法的平台名称应与依赖平台的调用 API 平台名称匹配。

    99950

    阻止某个 NuGet 包意外升级

    然而,团队开发的软件可能因为某个小伙伴不知道这样的历史问题,从而手抖将某个不应该更新的 NuGet 包更新了,于是迁移就挂了。 本文提供了一种方法来避免某些特定 NuGet 包的升级。...(当然并不是说旧的 csproj 不能使用这种方法,只是写法上会有差别,我没有去研究如何编写。)...而一个典型的隐藏方法便是使用 Target。不在 Target 里面的属性和项是提前计算好的,而 Target 里面的属性和项是编译时才计算的。...可以通过阅读 如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target 了解更多 Target 的知识。...并且在安装了新版本的包后,将因为多次引用不同版本而导致编译不通过。 所以,方案否决。 最终解决 既然无法阻止发现这个 NuGet 包,那思路就换成无论如何更新,都无效好了。

    1.3K20

    ASP.NET Core 6框架揭秘实例演示: 编程初体验

    如下所示的就是项目目录下的生成的Program.cs文件的内容。可以看出整个文件只有两行文字,其中一行还是注释。这唯一的一行代码调用了Console类型的静态方法将字符串“Hello, World!”...如代码片段所示,我们调用WebApplication类型的静态工厂方法CreateBuilder创建了一个WebApplicationBuilder对象,该方法的参数args代表命令行参数数组。...图4 启动应用程序并利用浏览器进行访问 [103]一步创建WebApplication对象 上面演示的程序先调用定义在WebApplication类型的静态工厂方法CreateBuilder创建一个WebApplicationBuilder...WebApplicationBuilder提供了很多用来对构建WebApplication进行设置的API,但是我们的演示实例并未使用到它们,此时我们可以直接调用静态工厂方法Create将WebApplication...按照ASP.NET Core的约定,中间件类型需要定义成一个公共实例类型(静态类型无效),其构造函数可以注入任意的依赖服务,但必须包含一个RequestDelegate类型的参数,该参数表示由后续中间件构建的管道

    1.4K20

    有没有考虑过自己写一个 extern 方法?

    一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的。...这种 DllImport 标记的方法都带有一个 extern 关键字。 那么有没有可能我们自己写一个自己的 extern 方法呢?答案是可以的。本文就写一个这样的例子。...这里,我们需要用到 MSBuild/Roslyn 相关的知识: Roslyn 通过 Target 修改编译的文件 - 林德熙 当你读完上面那篇文章,你就明白我想干啥了。...▲ 可以运行 总结 extern 是 C# 的一个语法而已,谁都可以用,但最终编译时的 C# 文件必须都有实现。 我们可以在编译时修改编译的文件来为这些未实现的方法添加实现。...我们查看其编译后的 IL 代码,可以发现其外部调用已经写到了 IL 里面了,并且其实现使用了 pinvokeimpl 关键字。也就是说,具体的调用是 JIT 编译器去做的事儿。

    78120

    Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

    .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码(本文) 如果你希望真实地静态分析一个实际项目,并且理解这样的分析过程是如何进行的...>net471TargetFramework> 现在,我们有了一个可以开始写代码的 Program.cs 文件,接下来就可以正式开始入门了...其中 1 和 3 写在一个方法中,2 是一个新类。 分析这个泛型参数 直到现在,我们所写的任何代码都还只是为了使使用 Roslyn API 的代码能够跑起来,没有进行任何实质上的分析。...; parameters = parameters.Add(SyntaxFactory.TypeParameter("TParameter")); // 依然保留之前的更新语法节点的方法...TypeParameterVisitor 遍历语法树) 需要注意,Main 函数只有 C#7.2 及以上才支持 async,如果没有这么高,需要再编写一个新函数,然后在 Main 里面调用它。

    1.8K10
    领券