Tag: 解决方案

如何在一个文件夹中构建所有项目?

有没有办法将解决方案构建到单个文件夹中? 我在这个解决方案中有几个项目,每个项目都访问一个应该在当前目录中的配置文件。 我只是将每个项目的构建文件移动到一个,它仍然可以工作,但是,它看起来如此无组织和混乱。 我只是想知道还有其他方法可以做到这一点。

Visual Studio中大解决方案中最受欢迎的项目

如果有人问我是否道歉 – 我找不到比赛。 我有一个… 96个项目的解决方案。 我一次工作3-4次。 有没有办法过滤掉,标记为我最感兴趣的项目等项目? 项目按字母顺序排序,因为我的一个项目从B开始,另一个项目从T开始,我总是不得不向下滚动并强调我的大脑,同时寻找需要的东西。 有点令人失望。 我认为我没有使用解决方案文件夹。 这是要走的路吗?

如何将Visual Studio .NET 2008解决方案转换为Visual Studio .NET 2005?

假设解决方案只包含类,并且这些类都写入.NET 2.0规范。 如果要在Visual Studio 2008中打开,转换和保存该解决方案,是否可以稍后在Visual Studio 2005中重新打开解决方案,并对.SLN文件进行一些最小的修改? 怎么会这样做呢? 如果解决方案中包含的所有类都已写入.NET 2.0规范,是否有一个工具可以从2008年到2005年“转换”.SLN文件?

如何以编程方式从C#代码构建我的解决方案文件?

我有一个包含许多项目的大型解决方案,其中一个是安装项目。 还有许多当前版本存储在单独的分支中。 我有一个以前在.NET 2中工作的构建工具,但自从我们升级到.NET 4以来一直没有用。 在内部,构建工具的新.NET 4版本使用Microsoft.TeamFoundation.Client.RegisteredTfsConnections.GetProjectCollections()和versionControlServer.GetAllTeamProjects(false)从我的TFS源控制服务器获取TeamProject的集合。 然后,我在UI中以可视方式显示它们,当用户单击特定解决方案版本时,应用程序调用以下内容以获取该解决方案版本的最新信息: workspace.Get(new string[] { serverPath }, VersionSpec.Latest, RecursionType.Full, GetOptions.GetAll); 用于构建解决方案文件的应用程序,包括安装项目。 在此阶段,安装项目将创建一个可以安装应用程序的MSI。 这是我遇到问题的最后一步。 我需要能够以编程方式构建用户使用C#代码选择的解决方案。 这个工作的.NET 2代码如下: Process process = new Process(); ProcessStartInfo processStartInfo = process.StartInfo; processStartInfo.FileName = processName; processStartInfo.Arguments = string.Format(” \”{0}\” /BUILD \”Release|Any CPU\””, solutionPath); processStartInfo.WorkingDirectory = processDirectory; process.Start(); 运行此命令时没有错误,但它不再启动Visual Studio并构建代码。 很明显,这是一个很难做到最初的方法,但我找不到使用TFS类的“正确”方式。 我也尝试直接运行MSBuild.exe(类似于上面的例子),这确实构建了解决方案,但由于某种原因没有构建产生MSI的安装项目。 请注意,我不使用任何手动创建的构建文件。 不幸的是,很难找到Microsoft.TeamFoundation命名空间的有用文档! 我希望这里有人利用这些课程,并指导我解决这个问题。 如果可能的话,我需要使用.NET类(例如,不是Process.Start),因为我真的需要知道构建何时完成。 但是,如果这个问题太多,我可以为此设置一个FileSystemWatcher对象。

Visual Studio解决方案文件夹在项目级别

在Visual Studio(2010)中,是否可以在项目级别创建“解决方案文件夹”? Visual Studio中的“虚拟”项目文件夹? 问题: 我们的解决方案中有一个项目,其中包含我们所有的文化资源文件。 我们为每个业务目的使用单个资源文件,即我们有多个表示每种文化的资源文件。 由于不同文化的资源文件必须存储在同一位置(路径),因此这会导致或项目在根级别包含许多资源文件。 这暂时没有问题但是当我们添加对不同文化的支持时,资源文件的数量将增长到无法管理的数量 因此,为了更好地组织我们的项目,我们想在项目级别创建一个“虚拟”文件夹,我们可以为每个文化创建一个文件夹。 这可能吗? 有什么想法吗?

c#解决方案中的命名空间和文件夹结构:如何组织磁盘上的文件夹?

首先,让我们同意命名空间应该匹配文件夹结构,并且每个语言工件应该在它自己的文件中。 (请参阅解决方案中的文件夹是否应与命名空间匹配? )。 接下来的问题是如何在磁盘上实际组织文件夹。 假设我在ABC命名空间中有ClassC,在ABCD命名空间中有ClassD。 我们还假设每个命名空间都构建在它自己的程序集(项目)中,并且命名空间根据公认的最佳实践从右到左依赖(ABCD可以依赖于ABC,它可以依赖于AB,它可以依赖于A)。 我感谢每个命名空间不必在一个单独的程序集中,但在一般情况下,我们将在单独的程序集中有一些命名空间,我的示例说明了这一点。 我可以看到(至少)两种创建文件夹树的方法 – 我称之为“嵌套文件夹”和“平面文件夹”: 1 – 嵌套文件夹: 一个 –A.csproj –B —- ABcsproj – – C —— ABCcsproj —— classC.cs —— d ——– ABCDcsproj ——– classD.cs 要么 2 – 扁平文件夹: 一个 –A.csproj AB –ABcsproj ABC –ABCcsproj –classC.cs A B C D –ABCDcsproj –classD.cs 你会看到我已经做了一些假设: 每个项目文件都具有基于命名空间的完全限定名称(FQN)。 每个类文件都使用非FQN 嵌套文件夹似乎更自然(我们都喜欢层次结构),但在大型解决方案中导航可能有点困难: 当您在VS中查看解决方案时,它会显示项目的平面列表,而不是嵌套视图。 这看起来更像是“平面文件夹”,因此在磁盘上组织文件夹以匹配VS中的视图可能是有好处的。 如果查看磁盘上的每个文件夹,您将看到该项目的文件夹文件加上命名空间的子文件夹:以C为例: […]

ENVDTE – 将新项目添加到现有解决方案并将其定位到特定文件夹中

我在visual studio 2012上使用c#编写了一个Visual Studio向导模板。 我按照MSDN步骤操作:我创建了一个VS模板,然后创建了一个类库项目,其中包含一个实现IWizard接口的类,我配置了.vstemplate文件等… 在我的类库项目中,我从计算机中的某个目录复制现有解决方案,我将新生成的项目添加到该解决方案,然后运行它。 我这样做: public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object[] customParams) { solutionDir = replacementsDictionary[“$solutiondirectory$”]; destProjectDir = replacementsDictionary[“$destinationdirectory$”]; projName = replacementsDictionary[“$specifiedsolutionname$”]; EmulationDir = @”MY_PATH\TestSln”; DirectoryCopy(EmulationDir, solutionDir); dte = (DTE2)automationObject; } public void RunFinished() { Solution2 solution; Project p; solution = (Solution2)dte.Solution; solution.Open(solutionDir + “\\TestSln.sln”); p = solution.AddFromFile(destProjectDir + “\\” […]

当启动应用程序是控制台应用程序时,防止iisexpress在解决方案中运行网站

我有一个包含许多项目的解决方案。 即使我将web项目的启动选项设置为: 不要打开页面。 等待来自外部应用程序的请求。 使用自定义网络服务器 基本URL: http://localhost 。 启动项目: 单一启动项目 选择控制台应用程序(不是网站) 当我按下开始调试时,IIS express启动(显示在任务栏上)。 如何阻止IIS Express启动? 我只运行一个控制台应用程序,并且不希望IIS Express运行。 实际上,解决方案中的所有网站都在IIS中启动,并且它们不必要地消耗我机器上的资源。

以编程方式从addins获取当前的Visual Studio IDE解决方案目录

我有一些工具可以在.NET解决方案上执行更新,但是他们需要知道解决方案所在的目录。 我将这些工具添加为外部工具,它们出现在IDE工具菜单中,并提供$(SolutionDir)作为参数。 这很好用。 但是,我希望通过自定义顶级菜单(我为其创建Visual Studio集成包项目)以及通过解决方案节点上的上下文菜单(我为其创建了一个Visual),在IDE中为用户更轻松地访问这些工具。 Studio加载项目)。 我正在寻找一种方法来通过这些上下文获取当前的解决方案目录。 我尝试从VisualStudio.DTE对象获取解决方案信息: EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject(“VisualStudio.DTE”); string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName); 但是,这将返回add ins的解决方案目录,而不是当前解决方案。 我尝试回显$(SolutionDir)并将其读回: System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(“cmd”, “echo $(SolutionDir)”); // The following commands are needed to redirect the standard output. // This means that it will be redirected to the Process.StandardOutput StreamReader. procStartInfo.RedirectStandardOutput = true; procStartInfo.UseShellExecute = false; […]

如何从VSPackage获取当前解决方案目录?

以下是如何从加载项获取当前解决方案目录: _applicationObject = (DTE2)application; // retrieved from OnConnection method string solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName); 你会如何通过VSPackage做到这一点? 我正在将可视工作室加载项迁移到VSPackage,因为我打算添加一些需要与IDE进行更深入集成的用户控件。 我发现了一些关于加载项与集成包的相对优点的一些很好的参考,例如: http : //nayyeri.net/visual-studio-addin-vs-integration-package-part-1 以及关于VSPackages上msdn的一些很好的教程,例如: http : //msdn.microsoft.com/en-us/library/cc138589.aspx 我还没有找到关于加载项(例如DTE)中的更高级接口如何映射到VSPackage中的低级接口的良好引用(在msdn或其他方面)。 有什么好的参考资料可以帮助实现从附加接口到VSPackage接口的一般映射?