繁体   English   中英

如何使用 MSBuild NuGet 将 .csproj 文件加载到 .NET Core 3.0

[英]How to Load .csproj file into .NET Core 3.0 using MSBuild NuGet

我有一个非常简单的控制台项目:

class Program
{
    static void Main(string[] args)
    {
        var project = new Project(
            "FishStory.csproj", 
            null, 
            null, 
            new ProjectCollection());

        Console.ReadLine();
    }
}

这是一个 .NET Core 3.0 控制台应用程序,它引用了Microsoft.Build (16.4.0) NuGet 包。

找到了 .csproj 文件FishStory.csproj (我没有收到 .csproj 丢失的异常),但我确实收到以下错误。

Microsoft.Build.Exceptions.InvalidProjectFileException: '未找到导入的项目“C:\\Users\\vchel\\source\\repos\\ForDave\\ForDave\\bin\\Debug\\netcoreapp3.0\\Microsoft.CSharp.targets”。 确认导入声明“C:\\Users\\vchel\\source\\repos\\ForDave\\ForDave\\bin\\Debug\\netcoreapp3.0\\Microsoft.CSharp.targets”中的表达式正确,并且该文件存在于磁盘上。 C:\\Users\\vchel\\source\\repos\\ForDave\\ForDave\\bin\\Debug\\netcoreapp3.0\\FishStory.csproj'

我希望这样一个简单的 MSBuild 测试会“正常工作”,但似乎我错过了一些东西。 我该怎么做才能加载这个 .csproj 文件?

似乎 NuGet 包添加了必要的 .dll 以使用 Project 对象,但各种项目类型必须具有加载 Project .csproj 时使用的 .target 和 .props 文件。

要加载我的特定项目,我必须将以下文件添加到输出目录中。 我通过将文件放在我的项目中并将它们标记为Copy if Newer来完成此操作。

我添加了以下文件:

  • Microsoft.Common.targets
  • Microsoft.CSharp.targets
  • Microsoft.NETFramework.props
  • Microsoft.NETFramework.targets

就我而言,.csproj 是一个 MonoGame 项目,所以我还必须添加:

  • MonoGame.Build.Tasks.dll(不确定我是否需要这个)
  • MonoGame.common.props
  • MonoGame/v3.0/MonoGame.Content.Builder.targets

添加这些文件以便将它们复制到输出文件夹:

  1. 将文件添加到您的项目中(对于 .NET Core,您只需将文件添加到目录中)
  2. 右键单击解决方案资源管理器中的文件并选择属性
  3. 如果较新复制到输出目录设置为复制

我从以下位置提取了目标/道具/.dll 文件:

  • C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319
  • C:\\Program Files (x86)\\MSBuild\\MonoGame\\v3.0

我猜测其他项目类型(例如 Android Xamarin 项目)可能需要不同的 .targets 文件。

最后,我还必须手动添加 NuGet 包Microsoft.Build.Utilities.Core 不知道为什么在添加Microsoft.Build时没有自动添加

解决方案资源管理器截图

我在尝试加载针对 netcore31 平台的项目时遇到了同样的异常。
但在那之后我已经安装了

  • Microsoft.Build.Utilities.Core(16.5.0)
  • Microsoft.Build (16.4.0)

nuget 包,没有更多的例外。 项目加载成功。

也许,它会帮助更多人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM