首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将生成的resx文件添加到项目中

将生成的resx文件添加到项目中
EN

Stack Overflow用户
提问于 2019-11-12 22:15:20
回答 1查看 80关注 0票数 0

我们的团队正在尝试为所有语言翻译实现一个主csv文件,以使我们的系统团队能够维护我们的资源文件。我正在创建一个dll,该dll将在构建之前调用,以便将上述csv文件转换为各自的resx和designer文件。我已经完成了生成resx文件和设计器文件的工作,但是很难将生成的新resx文件正确地添加到资源项目中。我查看了this解决方案来向项目添加一个文件,但是我不能正确地添加依赖项。

这是我想要使用的代码

代码语言:javascript
复制
var p =
Microsoft.Build.Evaluation
  .ProjectCollection.GlobalProjectCollection
    .LoadedProjects.FirstOrDefault(pr => pr.FullPath == projFilePath);

if (p == null)
   p = new Microsoft.Build.Evaluation.Project(projFilePath);
p.AddItem("Folder", @"C:\projects\BabDb\test\test2");
p.AddItem("Compile", @"C:\projects\BabDb\test\test2\Class1.cs");
p.Save();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 19:36:23

对于任何一个可能会在这个问题上绊脚石的人,下面是我是如何解决这个问题的

代码语言:javascript
复制
var resourceProject = Microsoft.Build.Evaluation
                              .ProjectCollection.GlobalProjectCollection
                                .LoadedProjects.FirstOrDefault(pr => pr.FullPath == projFilePath);

                        if (resourceProject == null)
                            resourceProject = new Microsoft.Build.Evaluation.Project(projFilePath);
                        //add resx file if it doesn't exist in the project
                        if (resourceProject.Items.FirstOrDefault(i => i.EvaluatedInclude == path) == null)
                        {
                            string designerPath = path.Replace(".resx", ".Designer.cs");
                            //Add metadata when the resx file has a designer file
                            resourceProject.AddItem("EmbeddedResource", path);
                            if (withDesigner)
                            {
                                var projectItem = resourceProject.Items.FirstOrDefault(i => i.EvaluatedInclude == path);
                                projectItem.SetMetadataValue("Generator", "ResXFileCodeGenerator");
                                projectItem.SetMetadataValue("LastGenOutput", Path.GetFileName(designerPath));
                                resourceProject.AddItem("Compile", designerPath);
                                var designerItem = resourceProject.Items.FirstOrDefault(i => i.EvaluatedInclude == designerPath);
                                designerItem.SetMetadataValue("AutoGen", "True");
                                designerItem.SetMetadataValue("DesignTime", "True");
                                designerItem.SetMetadataValue("DependentUpon", Path.GetFileName(path));
                            }
                            resourceProject.Save();
                        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58827503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档