/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         佛祖保佑       永无BUG
*/
/************************************************************************************
* Copyright (c) 2014  All Rights Reserved. 
* CLR版本： 4.0.30319.35317 
* 创建人：  luoshupeng 
* 电子邮箱：luoshupeng@outlook.com 
* 创建时间：8/28/2014 3:52:33 PM 
* 描述： VS版本转换接口描述
* ===================================================================== 
* 修改标记  
* 修改时间：8/28/2014 3:52:33 PM 
* 修改人： luoshupeng 
* 描述：   
************************************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace VSConverterLib
{
    public interface IConverter
    {
        /// <summary>
        /// 解决方案或项目的名称
        /// </summary>
        string SolutionName { get; }

        /// <summary>
        /// 解决方案或项目的Visual Studio版本
        /// </summary>
        VisualStudioVersion VisualStudioVersion { get; }

        /// <summary>
        /// 解决方案或项目的IDE版本
        /// </summary>
        IdeVersion IDEVersion { get; }

        /// <summary>
        /// 是否另外保存
        /// </summary>
        bool SaveAs { get; set; }

        /// <summary>
        /// 加载解决方案或项目
        /// </summary>
        /// <param name="solutionPath">解决方案或项目路径</param>
        /// <returns></returns>
        bool Load(string solutionPath);

        /// <summary>
        /// 转换项目到另一个版本
        /// </summary>
        /// <param name="VSVersion">Visual Studio 版本</param>
        /// <returns></returns>
        ConversionResult ConvertTo(VisualStudioVersion VSVersion);

        /// <summary>
        /// 转换解决方案到另一个版本
        /// </summary>
        /// <param name="VSVersion">Visual Studio版本</param>
        /// <param name="IDEVersion">IDE版本</param>
        /// <returns></returns>
        ConversionResult ConvertTo(VisualStudioVersion VSVersion, IdeVersion IDEVersion);
    }
}
