c#在解决方案中获取其他项目目录

时间:2017-08-03 15:10:06

标签: c# .net entity-framework

所以,我有一个用于分离关注点/逻辑的项目的解决方案......数据库上下文,服务,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项目
  3. 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 /

1 个答案:

答案 0 :(得分:0)

我认为您正在项目文件中查找msbuild任务(特别是复制任务)。

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

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

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

extension UIImage {
    func scaleImage(scaleToSize: CGSize) -> UIImage {
        UIGraphicsBeginImageContext(scaleToSize)

        self.draw(in: CGRect(origin: CGPoint(x: 0, y: 0), size: scaleToSize))
        let newImage = UIGraphicsGetImageFromCurrentImageContext()

        UIGraphicsEndImageContext()
        return newImage!
    }
}