关于c#:错误:* .csproj无法在MonoDevelop上导入“$(MSBuildBinPath)Microsoft.CSharp.targets”

Error: *.csproj could not import “$(MSBuildBinPath)Microsoft.CSharp.targets” on MonoDevelop

所以,我在LinuxMint16上有MonoDevelopv5.7。我创建了一个新的带有默认代码的控制台项目

1
2
3
4
5
6
7
8
9
10
11
12
using System;

namespace Lab1
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello World!");
        }
    }
}

并尝试建立它F7。之后出现错误:error:/…/…/lab1/lab1/lab1.csproj:…/…/lab1/lab1/lab1.csproj无法导入"$(msbuildbinpath)microsoft.csharp.targets"(lab1)。有人有什么建议吗?


我知道这很晚了,但在我的例子中,Mono的目标是一个没有安装的.NET版本。这是通过更改目标框架来解决的。

我在sln文件上运行xbuild发现了这个问题:

1
xbuild myProject.sln

我有点像:

1
warning : Could not find project file /usr/lib/mono/3.5/Microsoft.CSharp.targets, to import. Ignoring.

警告表明该项目默认为面向.NET 3.5,但我猜未安装该版本。让我们通过搜索丢失的文件来查找安装的版本:

1
find /usr/lib/mono -name"Microsoft.CSharp.targets"

在我的机器上,列出了/usr/lib/mono/4.5/Microsoft.CSharp.targets,但您可能有不同的.NET版本。忽略xbuild和msbuild路径。

无论它存在于何处,请转到项目,在解决方案窗格中单击项目旁边的设置按钮(带有齿轮图像的下拉按钮),然后单击"选项"。然后在"构建"下,您将看到"常规",单击它并将"目标框架"更改为.NET版本,其中文件夹包含microsoft.csharp.targets文件。在我的例子中,这是4.5。

希望这能帮助别人。


我的问题是我不小心删除了项目的packages.config文件。


如果是单声道错误。

所以打开项目菜单选择build->general并选择已安装的框架。

我在3.5上工作,但在Mono上只安装了4.5和4.5.1。

在选择了框架之后,我被问到是否要继续2010年或2012年,你可以选择其中一个。因为最初的程序是在2008年和Win7的3.5版本上编写的。这一定是原因。我用这种方法解决了。