![](/img/trans.png)
[英]How to build a csproj file using .net 2.0 MSBuild programmatically?
[英]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来完成此操作。
我添加了以下文件:
就我而言,.csproj 是一个 MonoGame 项目,所以我还必须添加:
添加这些文件以便将它们复制到输出文件夹:
我从以下位置提取了目标/道具/.dll 文件:
我猜测其他项目类型(例如 Android Xamarin 项目)可能需要不同的 .targets 文件。
最后,我还必须手动添加 NuGet 包Microsoft.Build.Utilities.Core 。 不知道为什么在添加Microsoft.Build时没有自动添加
我在尝试加载针对 netcore31 平台的项目时遇到了同样的异常。
但在那之后我已经安装了
nuget 包,没有更多的例外。 项目加载成功。
也许,它会帮助更多人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.