Visual Studio 2013部署文件保存

时间:2014-12-30 21:34:42

标签: visual-studio visual-studio-2013 publish

我正在使用visual studio 2013构建一个PHP网站。出于测试目的,我在项目根目录中有一个目录文件,它有几万个文件(1000GB)和几千个目录。我的Visual Studio 2013没有响应,因为Solution explorer正在扫描文件目录。

我的第一个想法是从项目but no idea how to do that中排除文件目录。

我的第二个想法是将项目源从Apache文档根目录移动(所有这些文件都在这里)。但是现在我需要在做出一些更改时发布项目或文件(.html,.js)。这非常耗时。有没有办法自动发布文件保存或每次保存复制到不同的文件夹?项目文件和Apache文档根目录都在同一台机器上。

1 个答案:

答案 0 :(得分:3)

我知道如何通过Visual Studio 2013 SDK提供的 VSPackage Extensions实现您的期望。您可以开发监听文档的保存事件的扩展,而不是对文件执行任何您喜欢的操作(例如,将其移动到Apache应用程序目录中)。您还可以订阅添加,删除,重命名,打开,打开和关闭事件。

检查此链接: http://msdn.microsoft.com/en-us/library/dn246938.aspx,从如何开始开发VSPackage扩展?部分开始。

按照步骤中的描述创建扩展骨架,测试它,并添加像theese那样的行:

    public void OnItemRenamed(EnvDTE.ProjectItem projItem, string oldName)
    {
        Log("[Event] Renamed " + oldName + " to " + Path.GetFileName(projItem.get_FileNames(1)) + " in project " + projItem.ContainingProject.Name);
        //add your logic here
    }

    public void OnDocumentSaved(Document document)
    {
        Log("[Event] Saved " + document.Name + " in project " + document.ProjectItem.ContainingProject.Name);
        //add your logic here
    }

    private void OnDocumentOpening(string documentpath, bool @readonly)
    {
        Log("[Event] Opening " + documentpath );
        //add your logic here

    }

    private void InitEvents() //remember to call it in Initialize()
    {
        DTE2 dte = (DTE2)GetService(typeof(DTE));

        Events2 dteEvents = (Events2)dte.Events;
        dteEvents.ProjectItemsEvents.ItemRenamed += OnItemRenamed;

        //remember to declare it
        _docEvents = dteEvents.DocumentEvents; // defend against Garbage Collector
        _docEvents.DocumentOpening += OnDocumentOpening;
        _docEvents.DocumentSaved += OnDocumentSaved;
     }

我知道这就像拿一把大锤来破解坚果一样,但它是某种解决方案。

我想知道为什么你的项目如此之大?也许它包含大量用户生成的数据(图像/其他文件),可以移动到其他文件夹/机器?如果是(并且您在本地不需要它们),请查看Apache的ProxyPass模块并重定向它们的请求: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html ProxyPass /foo http://live.example.com/foo

...我希望你有SSD磁盘; - )