相关疑难解决方法(0)

如何以编程方式在我的项目中包含一个文件?

背景

我正在制作一个帮助应用程序来重新格式化一些代码文件并创建新的代码文件,这些代码文件将被添加到我的其他项目中,所以我可以立即使用新代码,但是我在添加新代码文件时遇到了麻烦自动进入我的项目.顺便说一下,它在c#中,帮助应用程序是WinForms.

尝试失败

这个问题唯一的答案有两种方法,但我不能让它们中的任何一种起作用.第一个我找不到Microsoft.Build要引用的程序集,而在另一个中显然没有足够的参数用于命令行.

如何在不使用第三方应用程序的情况下以编程方式将文件包含到项目中?

基本上,我正在寻找相当于这个:

......但是使用代码完成了.

要求

这些是我认为解决方案应该提供的功能:

  • 选择包含我们要添加文件的项目解决方案
  • 选择要添加文件的项目
  • 选择项目中的目录
  • 当然,我们正在添加的文件

进展

通过用户@ psubsee2003的帮助,我能够在我的计算机上的Microsoft.Build.dll文件C:\Windows\Microsoft.NET\Framework\v4.0.30319夹中找到该文件,并通过将我的项目的目标框架更改为版本4 完整配置文件而不是默认的客户端配置文件来成功导入它.

我发现了如何使用该AddItem方法:

var p = new Microsoft.Build.Evaluation.Project(@"C:\projects\MyProject.csproj");
p.AddItem("Compile", @"C:\folder\file.cs");
p.Save();
Run Code Online (Sandbox Code Playgroud)

该文件将出现在项目的根文件夹中,除非项目已经有一个文件夹folder,在这种情况下文件将放在那里.因此,基本上该文件将被放置在原始文件的路径中找到的最深的文件夹链中,该路径将朝向根文件夹.

c# projects-and-solutions visual-studio-2010 visual-studio winforms

39
推荐指数
5
解决办法
2万
查看次数

What's the correct usage of Microsoft.Build.Evaluation?

I want to programmatically add an Import to an MSBuild project. The API in this Microsoft.Build.Evaluation namespace allows me to to this (I'd prefer to achieve the same result through the VS extensibility API but there doesn't seem to be any way to do that so I'm resorting to this API).

If I want to open one or more Projects in a method, look at their Imports, and sometimes add an import, how am I supposed to use ProjectCollection object? …

msbuild

2
推荐指数
1
解决办法
1904
查看次数