本文整理汇总了C#中MonoDevelop.Projects.Project.AddFile方法的典型用法代码示例。如果您正苦于以下问题:C# Project.AddFile方法的具体用法?C# Project.AddFile怎么用?C# Project.AddFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MonoDevelop.Projects.Project
的用法示例。
在下文中一共展示了Project.AddFile方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddToProject
public override bool AddToProject (SolutionItem parent, Project project, string language, string directory, string name)
{
// Replace template variables
string cname = Path.GetFileNameWithoutExtension (name);
string[,] tags = {
{"Name", cname},
};
string content = addinTemplate.OuterXml;
content = StringParserService.Parse (content, tags);
// Create the manifest
XmlDocument doc = new XmlDocument ();
doc.LoadXml (content);
string file = Path.Combine (directory, "manifest.addin.xml");
doc.Save (file);
project.AddFile (file, BuildAction.EmbeddedResource);
AddinData.EnableAddinAuthoringSupport ((DotNetProject)project);
return true;
}
示例2: AddToProject
public override bool AddToProject (SolutionItem policyParent, Project project, string language, string directory, string name)
{
var path = FilePath.Build (directory, project.Name + "-res.zip");
var file = new ProjectFile (path, "EmbeddedResource");
file.ResourceId = "XobotOS.Resources";
file.Visible = false;
project.AddFile (file);
return true;
}
示例3: MigrateFiles
public void MigrateFiles (Project source, Project target)
{
foreach (ProjectFile file in GetFilesToMigrate (source).ToArray ()) {
FilePath destination = GetFileDestinationPath (file, source, target);
Directory.CreateDirectory (destination.ParentDirectory);
FileService.MoveFile (file.FilePath, destination);
var movedProjectFile = new ProjectFile (destination, file.BuildAction);
target.AddFile (movedProjectFile);
source.Files.Remove (file);
}
}
示例4: AddFileToProject
public ProjectFile AddFileToProject (SolutionItem policyParent, Project project, string language, string directory, string name)
{
generatedFile = SaveFile (policyParent, project, language, directory, name);
if (generatedFile != null) {
string buildAction = this.buildAction ?? project.GetDefaultBuildAction (generatedFile);
ProjectFile projectFile = project.AddFile (generatedFile, buildAction);
if (!string.IsNullOrEmpty (dependsOn)) {
Dictionary<string,string> tags = new Dictionary<string,string> ();
ModifyTags (policyParent, project, language, name, generatedFile, ref tags);
string parsedDepName = StringParserService.Parse (dependsOn, tags);
if (projectFile.DependsOn != parsedDepName)
projectFile.DependsOn = parsedDepName;
}
if (!string.IsNullOrEmpty (customTool))
projectFile.Generator = customTool;
DotNetProject netProject = project as DotNetProject;
if (netProject != null) {
// Add required references
foreach (string aref in references) {
string res = netProject.AssemblyContext.GetAssemblyFullName (aref, netProject.TargetFramework);
res = netProject.AssemblyContext.GetAssemblyNameForVersion (res, netProject.TargetFramework);
if (!ContainsReference (netProject, res))
netProject.References.Add (new ProjectReference (ReferenceType.Package, aref));
}
}
return projectFile;
} else
return null;
}
示例5: CreateClass
static IType CreateClass (Project project, Stetic.ActionGroupComponent group, string name, string namspace, string folder)
{
string fullName = namspace.Length > 0 ? namspace + "." + name : name;
CodeRefactorer gen = new CodeRefactorer (project.ParentSolution);
CodeTypeDeclaration type = new CodeTypeDeclaration ();
type.Name = name;
type.IsClass = true;
type.BaseTypes.Add (new CodeTypeReference ("Gtk.ActionGroup"));
// Generate the constructor. It contains the call that builds the widget.
CodeConstructor ctor = new CodeConstructor ();
ctor.Attributes = MemberAttributes.Public | MemberAttributes.Final;
ctor.BaseConstructorArgs.Add (new CodePrimitiveExpression (fullName));
CodeMethodInvokeExpression call = new CodeMethodInvokeExpression (
new CodeMethodReferenceExpression (
new CodeTypeReferenceExpression ("Stetic.Gui"),
"Build"
),
new CodeThisReferenceExpression (),
new CodeTypeOfExpression (fullName)
);
ctor.Statements.Add (call);
type.Members.Add (ctor);
// Add signal handlers
foreach (Stetic.ActionComponent action in group.GetActions ()) {
foreach (Stetic.Signal signal in action.GetSignals ()) {
CodeMemberMethod met = new CodeMemberMethod ();
met.Name = signal.Handler;
met.Attributes = MemberAttributes.Family;
met.ReturnType = new CodeTypeReference (signal.SignalDescriptor.HandlerReturnTypeName);
foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters)
met.Parameters.Add (new CodeParameterDeclarationExpression (pinfo.TypeName, pinfo.Name));
type.Members.Add (met);
}
}
// Create the class
IType cls = null;
cls = gen.CreateClass (project, ((DotNetProject)project).LanguageName, folder, namspace, type);
if (cls == null)
throw new UserException ("Could not create class " + fullName);
project.AddFile (cls.CompilationUnit.FileName, BuildAction.Compile);
IdeApp.ProjectOperations.Save (project);
// Make sure the database is up-to-date
ProjectDomService.Parse (project, cls.CompilationUnit.FileName);
return cls;
}
示例6: AddFilesToProject
/// <summary>
/// Adds files to a project, potentially asking the user whether to move, copy or link the files.
/// </summary>
public IList<ProjectFile> AddFilesToProject (Project project, FilePath[] files, FilePath targetDirectory,
string buildAction)
{
int action = -1;
IProgressMonitor monitor = null;
if (files.Length > 10) {
monitor = new MessageDialogProgressMonitor (true);
monitor.BeginTask (GettextCatalog.GetString("Adding files..."), files.Length);
}
var newFileList = new List<ProjectFile> ();
using (monitor) {
foreach (FilePath file in files) {
if (monitor != null) {
monitor.Log.WriteLine (file);
monitor.Step (1);
}
if (FileService.IsDirectory (file)) {
//FIXME: warning about skipping?
newFileList.Add (null);
continue;
}
//files in the project directory get added directly in their current location without moving/copying
if (file.IsChildPathOf (project.BaseDirectory)) {
newFileList.Add (project.AddFile (file, buildAction));
continue;
}
//for files outside the project directory, we ask the user whether to move, copy or link
var md = new Gtk.MessageDialog (
IdeApp.Workbench.RootWindow,
Gtk.DialogFlags.Modal | Gtk.DialogFlags.DestroyWithParent,
Gtk.MessageType.Question, Gtk.ButtonsType.None,
GettextCatalog.GetString ("The file {0} is outside the project directory. What would you like to do?", file));
try {
Gtk.CheckButton remember = null;
if (files.Length > 1) {
remember = new Gtk.CheckButton (GettextCatalog.GetString ("Use the same action for all selected files."));
md.VBox.PackStart (remember, false, false, 0);
}
const int ACTION_LINK = 3;
const int ACTION_COPY = 1;
const int ACTION_MOVE = 2;
md.AddButton (GettextCatalog.GetString ("_Link"), ACTION_LINK);
md.AddButton (Gtk.Stock.Copy, ACTION_COPY);
md.AddButton (GettextCatalog.GetString ("_Move"), ACTION_MOVE);
md.AddButton (Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
md.VBox.ShowAll ();
int ret = -1;
if (action < 0) {
ret = MessageService.RunCustomDialog (md);
if (ret < 0)
return newFileList;
if (remember != null && remember.Active) action = ret;
} else {
ret = action;
}
var targetName = targetDirectory.Combine (file.FileName);
if (ret == ACTION_LINK) {
var pf = project.AddFile (file, buildAction);
pf.Link = project.GetRelativeChildPath (targetName);
newFileList.Add (pf);
continue;
}
try {
if (MoveCopyFile (file, targetName, ret == ACTION_MOVE))
newFileList.Add (project.AddFile (targetName, buildAction));
else
newFileList.Add (null);
}
catch (Exception ex) {
MessageService.ShowException (ex, GettextCatalog.GetString (
"An error occurred while attempt to move/copy that file. Please check your permissions."));
newFileList.Add (null);
}
} finally {
md.Destroy ();
}
}
}
return newFileList;
}
示例7: AddFilesToProject
/// <summary>
/// Adds files to a project, potentially asking the user whether to move, copy or link the files.
/// </summary>
public IList<ProjectFile> AddFilesToProject (Project project, FilePath[] files, FilePath[] targetPaths,
string buildAction)
{
Debug.Assert (project != null);
Debug.Assert (files != null);
Debug.Assert (targetPaths != null);
Debug.Assert (files.Length == targetPaths.Length);
int action = -1;
IProgressMonitor monitor = null;
if (files.Length > 10) {
monitor = new MessageDialogProgressMonitor (true);
monitor.BeginTask (GettextCatalog.GetString("Adding files..."), files.Length);
}
var newFileList = new List<ProjectFile> ();
//project.AddFile (string) does linear search for duplicate file, so instead we use this HashSet and
//and add the ProjectFiles directly. With large project and many files, this should really help perf.
//Also, this is a better check because we handle vpaths and links.
//FIXME: it would be really nice if project.Files maintained these hashmaps
var vpathsInProject = new HashSet<FilePath> (project.Files.Select (pf => pf.ProjectVirtualPath));
var filesInProject = new HashSet<FilePath> (project.Files.Select (pf => pf.FilePath));
using (monitor) {
for (int i = 0; i < files.Length; i++) {
FilePath file = files[i];
if (monitor != null) {
monitor.Log.WriteLine (file);
monitor.Step (1);
}
if (FileService.IsDirectory (file)) {
//FIXME: warning about skipping?
newFileList.Add (null);
continue;
}
FilePath targetPath = targetPaths[i].CanonicalPath;
Debug.Assert (targetPath.IsChildPathOf (project.BaseDirectory));
var vpath = targetPath.ToRelative (project.BaseDirectory);
if (vpathsInProject.Contains (vpath)) {
MessageService.ShowWarning (GettextCatalog.GetString (
"There is a already a file or link in the project with the name '{0}'", vpath));
continue;
}
string fileBuildAction = buildAction;
if (string.IsNullOrEmpty (buildAction))
fileBuildAction = project.GetDefaultBuildAction (file);
//files in the target directory get added directly in their current location without moving/copying
if (file.CanonicalPath == targetPath) {
//FIXME: MD project system doesn't cope with duplicate includes - project save/load will remove the file
if (filesInProject.Contains (targetPath)) {
var link = project.Files.GetFile (targetPath).Link;
MessageService.ShowWarning (GettextCatalog.GetString (
"The link '{0}' in the project already includes the file '{1}'", link, file));
continue;
}
var pf = new ProjectFile (file, fileBuildAction);
project.AddFile (pf);
vpathsInProject.Add (pf.ProjectVirtualPath);
filesInProject.Add (pf.FilePath);
newFileList.Add (pf);
continue;
}
//for files outside the project directory, we ask the user whether to move, copy or link
var md = new Gtk.MessageDialog (
IdeApp.Workbench.RootWindow,
Gtk.DialogFlags.Modal | Gtk.DialogFlags.DestroyWithParent,
Gtk.MessageType.Question, Gtk.ButtonsType.None,
GettextCatalog.GetString ("The file {0} is outside the target directory. What would you like to do?", file));
try {
Gtk.CheckButton remember = null;
if (files.Length > 1) {
remember = new Gtk.CheckButton (GettextCatalog.GetString ("Use the same action for all selected files."));
md.VBox.PackStart (remember, false, false, 0);
}
const int ACTION_LINK = 3;
const int ACTION_COPY = 1;
const int ACTION_MOVE = 2;
md.AddButton (GettextCatalog.GetString ("_Link"), ACTION_LINK);
md.AddButton (Gtk.Stock.Copy, ACTION_COPY);
md.AddButton (GettextCatalog.GetString ("_Move"), ACTION_MOVE);
md.AddButton (Gtk.Stock.Cancel, Gtk.ResponseType.Cancel);
md.VBox.ShowAll ();
int ret = -1;
if (action < 0) {
//.........这里部分代码省略.........