我有一个非常简单的控制台项目:
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:UsersvchelsourceEposForDaveForDaveinDebug 找不到etcoreapp3.0Microsoft.CSharp.Target"。 确认导入声明"C:Usersvchelsource"中的表达式EposForDaveForDaveinDebug Etcoreapp3.0Microsoft.CSharp.Target"是正确的,并且该文件存在于磁盘上。C:UsersvchelsourceEposForDaveForDaveinDebug Etcoreapp3.0FishStory.csproj‘
我本以为这样一个简单的MSBuild测试会"正常工作",但我似乎遗漏了一些东西。如何加载此.csproj文件?
推荐答案NuGet包似乎添加了使用项目对象所需的.dll,但各种项目类型必须具有加载项目.csproj时使用的.Target和.props文件。
要加载我的特定项目,我必须将以下文件添加到输出目录。我通过将文件放在项目中并将它们标记为更新时复制来完成此操作。
我添加了以下文件:
- Microsoft.Common.Target
- Microsoft.CSharp.Target
- Microsoft.NETFramework.props
- Microsoft.NETFramework.Target
在我的例子中,.csproj是一个MonoGame项目,所以我还必须添加:
- MonoGame.Build.Tasks.dll(不确定我是否需要它)
- MonoGame.Common.props
- MonoGame/v3.0/MonoGame.Content.Builder.targets
要添加这些文件以将其复制到输出文件夹:
我从以下位置拉出了目标/props/.dll文件:
- C:WindowsMicrosoft.NETFramework64v4.0.30319
- C:程序文件(X86)MSBuildMonoGamev3.0
我猜其他项目类型(如Android Xamarin项目)可能需要不同的.Target文件,如果使用的是Visual Studio 2019社区:
,可以在此处找到- C:程序文件(X86)Microsoft Visual Studio2019CommunityMSBuildXamarin
更多推荐
如何使用MSBuild NuGet将.csproj文件加载到.NET Core 3.0中
发布评论