【问题标题】:How to Load .csproj file into .NET Core 3.0 using MSBuild NuGet如何使用 MSBuild NuGet 将 .csproj 文件加载到 .NET Core 3.0
【发布时间】:2019-12-17 23:32:57
【问题描述】:

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

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 文件?

【问题讨论】:

    标签: c# .net-core msbuild project


    【解决方案1】:

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

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

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

    也许,它会帮助更多人。

    【讨论】:

    • 我有同样的情况,但您的解决方案无法为我解决。还有其他建议吗?
    【解决方案2】:

    似乎 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 文件,如果使用 Visual Studio 2019 社区,可以在此处找到:

    • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin

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

    时没有自动添加

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2017-08-09
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2023-01-12
    相关资源
    最近更新 更多