【问题标题】:c# Getting other project directory within solutionc#在解决方案中获取其他项目目录
【发布时间】:2017-08-03 23:29:09
【问题描述】:

所以,我有一个用于分离关注点/逻辑的项目的解决方案...数据库上下文、服务、UI 等等。 我想要的是能够从我的数据库上下文项目中获取我的 UI 项目中的文件夹位置,以便在我通过 EF 更新我的 SQLite 时使用。 我可以轻松地在我的 UI 项目中获取 bin 文件夹,并且在技术上工作正常,因为 bin 文件夹 SQLite 文件将在项目运行时使用,但 bin 文件不包含在源代码管理中,因此数据库文件位于 bin 文件夹之外build 被复制到 bin 文件只是一种更好的方法。

 _connectionString = $"Data Source={AppContext.BaseDirectory}\\Sqlite\\SomeName\\SomeName.sqlite";

这将在执行 EF 合并时将 bin 构建器作为基本目录。 我确实尝试了各种方法来获得它,但除了硬编码之外,我无法实现我想要的。硬编码显然不是一种选择。是否可以获取解决方案位置,然后使用它导航到解决方案中的不同项目? .Net Core 或 .Net 框架方法都可以。

为了澄清,我希望我的数据上下文项目在另一个项目文件夹中创建 SQLite 数据库文件,并且我希望该文件不在运行时生成的 /bin 文件夹中。我需要一种方法来动态获取解决方案中另一个项目的位置。

假设我有一个由 2 个项目组成的解决方案。

  1. 数据库上下文项目
  2. UI/api 项目

UI/API 项目有一堆文件夹,如您所料。我想获取其中一个的位置以在我的连接字符串中使用。 并且没有 web 配置是不合适的,因为它们无论如何都不是动态的,其次它们被弃用并且有充分的理由,但是使用 json 配置文件也不是一个选项,因为它仍然不是动态的。 配置文件适用于始终位于同一位置的数据库,并且您的项目位置无关紧要。但在这种情况下,如果其他人提取了我的源代码,它将不在同一个目录中,并且 SQLite 文件是本地的,而不是在线托管的。

我想要得到的是我的解决方案的路径是 c:/projects/Solution 还是 d:/c#/random/StackOverflower/Projects/Solution

我能得到的是 c:/projects/Solution/UI/Bin/Debug

我的最终目的是获取 c:/projects/Solution/UI/Sqlite/

【问题讨论】:

  • 不太清楚你在问什么。您是在问如何将应用层中的值用作数据层中的连接字符串?这正是app.configweb.config 文件的用途。应用程序将有一个包含环境设置的配置文件,例如连接字符串,应用程序使用的代码将能够在运行时获取这些值。
  • @David 澄清说,配置文件是静态的,在这种情况下不起作用。我正在处理可以更改目录的项目中的本地文件。

标签: c# .net entity-framework


【解决方案1】:

我认为您正在项目文件中寻找 msbuild 任务(尤其是复制任务)。

https://msdn.microsoft.com/en-us/library/3e54c37h.aspx

前段时间我写了一篇关于它的博客文章。我已经停止写博客,所以代码部分由于某种原因丢失了,所以我把它放在这里。

https://torontoprogrammers.blogspot.com/2014/11/msbuild-targets-and-tasks.html

<copy destinationfolder="..\References\Libraries\" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)\$(AssemblyName).dll" />   
 <copy destinationfolder="..\References\Libraries\" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)\$(AssemblyName).pdb" />    
 <copy destinationfolder="..\References\Libraries\" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)\$(AssemblyName).xml" />  

【讨论】:

  • 不,这与我的需要没有任何关系。我需要在解决方案中的另一个项目中获取文件夹的路径/位置。我已经更新了我的问题。我需要在运行时获取解决方案路径,解决方案是指项目源代码的路径,而不是编译的 bin 文件夹
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多