【问题标题】:Visual studio 2013 deploy file on saveVisual Studio 2013 在保存时部署文件
【发布时间】:2014-12-30 21:34:42
【问题描述】:

我正在使用 Visual Studio 2013 构建一个 PHP 网站。出于测试目的,我在项目根目录中有一个目录文件,其中包含几万个文件 (1000GB) 和几千个目录。我的 Visual Studio 2013 没有响应,因为解决方案资源管理器正在扫描文件目录。

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

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

【问题讨论】:

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


    【解决方案1】:

    我知道如何使用 Visual Studio 2013 SDK 提供的 VSPackage Extensions 实现您的期望。您可以开发监听文档的保存事件的扩展,然后可以对文件做任何您喜欢的事情(例如,将它的副本移动到您的 Apache 应用程序目录)。您还可以订阅 Add、Remove、Rename、Open、Opening 和 Close 事件。

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

    按照步骤中的描述创建扩展框架,对其进行测试,然后添加类似这些的行:

        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 磁盘 ;-)

    【讨论】:

    • 我设法做到了。有用。如何将菜单命令添加到主菜单?调试时,菜单命令会自动出现在工具菜单中。但不是当我打开新项目时。我读到它与 .vsct 文件有关。但我不知道我还需要做什么。
    • 设法通过在发布文件夹中执行 .vsix 文件来做到这一点。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多