精华内容
下载资源
问答
  • 点击另存为 这里也可以空白处右键即可新建 vs可以直接资源文件处右键添加 或者点击打开文件

    在DEV中点击另存为 在打开的目录里也可以在空白处右键即可新建
    不过最好的办法是右键文件,然后点击打开项目或文件选项

    在vs中可以直接在资源文件处右键添加
    或者点击打开文件 这里写图片描述
    这里写图片描述

    展开全文
  • 我用的是VS2013,自己编的一个定时关机的程序,直接点ctrl+f5能正常运行, 但是打开文件夹找到exe文件却不行。实在是令我费解,求大神解答 ![图片说明]...
  • VS.NET IDE中集成VSS的常见问题

    千次阅读 2004-11-01 07:52:00
    很多人喜欢VS.NET IDE中集成Source Control,以下是一些有关VS.NET IDE中集成VSS的常见问题。VSS与VS.NET IDE的集成会带来哪些好处?好处:(1)可直接在IDE中CheckOut/CheckIn。(2)一台新机器上第一次打开...

     很多人喜欢在VS.NET IDE中集成Source Control,以下是一些有关在VS.NET IDE中集成VSS的常见问题

    VSSVS.NET IDE的集成会带来哪些好处

    好处:

    1可直接在IDECheckOut/CheckIn

    2在一台新机器上第一次打开Solution可为Web Project自动创建IIS虚拟目录。

    3VS.NET自动判断不该添加到VSS中的文件,例如suo*.vbproj.user等,避免手工添加这些文件之后导致个人环境互相干扰的问题。

    4)文件更名特别方便,尤其是aspx文件更名时,VSS中的aspx.vb以及相关的resx文件都能自动更名。

     

    缺点:

    1VS.NETSource Control Add-inBug,经常出错,特别是调整Solution结构时。正确的Folder更名操作步骤很复杂,因此调整Solution结构特别麻烦。

    2)操作更要小心,有一定的培训/学习成本。

    3)打开Solution时,因为需要与VSS Server通讯,速度很慢,而且占用网络带宽和服务器资源。

    4Web项目的工作目录总是在wwwroot下面,与SourceSafe中的项目层次结构不一致。

    5)想要临时修改某个文件调试一下,特别不方便(因为提示要CheckOut),尤其是修改Project文件(比如增加一个临时文件测试一下的时候)。

    6)创建Project的人,在第一次Add to Source Control时,VSS将自动创建一个与Solution同名的VSS Folder,比如:本来想将Purchase.sln添加到$/…/Src之下,但是结果是添加到$/…/Src/Purchase之下。对于Web Project,其他人Open From Source Control时,工作目录都会变成InetPub/wwwroot下面的子目录,而创建Project的人的工作目录却是原先在…/Src/下面的某个目录。

    7VS.NET有很多Bug,导致操作出错或不便。比如:

    • Change Source Control对话框中,经常几个Project被捆在一起,选中一个就选中其他几个,无法单独设定绑定路经。
    • Unbind时,经常无法全选,这样在准备一个独立的、不绑定的开发环境时很费事。
    • Check In时,有时会提示一些不相干的文件,让你选择是否Check In,而事实上那些文件根本没有Check Out

     

    想要将VSSVS.NET IDE绑定必须做什么准备工作

    1)安装VSS客户端

    安装程序在文件服务器上://xafile/Share/MSDN/VSS/EN/VSS60d

    CD Key: 111-1111111

    2)删除可能重名的IIS VD

    本机IIS最好没有任何自己创建的VD(虚拟目录),否则,可能在打开Solution时被提示输入形如VD_1的工作目录。

    另外,Inetpub/wwwroot下面的同名目录也要删除,以免出错,尽管这种情况VS.NET不会提示VD_1样式的工作目录。

    3第一次从VS.NET打开Solution必须通过选择File - Source Control - Open From Source Control命令不能用传统方法Get之后从本地硬盘直接打开否则将无法自动创建IIS VD

    一个原来没有绑定的Solution,如何才能正确地实现绑定?

    最保险的做法:

    1)将所有ProjectsSolutionRemove,这样得到一个空的Solution

    2VS.NETFile – Source Control – Add to source control命令

    注意:Add to Source Control Project对话框中,默认有一个Project名,形如SoluionName.Root,应该把这个内容清空,否则会在VSS中看到$/SolutionName.Root/SolutionName这样的重复目录结构。

    3Add Existing Project命令添加原有ProjectsSolutions中。

    4Check In那些添加进来的Projects

    此时VS.NET会提示resx文件用UTF-8编码,无法用VSS控制变更等,不用管它。

    绑定前后,Solution中的哪些文件有变化?又有哪些本来没有的文件会自动产生?

    1)关键的改变只有sln文件,原有内容之后会添加一个GlobalSection,形如:

    Global

    GlobalSection(SourceCodeControl) = preSolution

    SccNumberOfProjects = 53

    SccLocalPath0 = .

    CanCheckoutShared = false

    SolutionUniqueID = {EFD7F1A3-3977-4BE8-AFFC-D33AB7D8546C}

    SccProjectUniqueName1 = ..//..//WebFramework//Src//Frameworks.etp

    SccProjectName1 = /u0022$/WebProjects/WebFramework/Src/u0022,/u0020J…

    SccLocalPath1 = ..//..//WebFramework//Src

    CanCheckoutShared = false

    ……

    EndGlobalSection

    EndGlobal

    2)自动产生的SolutionName.vssscc文件没有什么实质性内容。

    3)自动产生的etpname.vspscc或者projectname.vspscc文件没有实质内容。看起来比较重要的一行信息是:

    "PROJECT_FILE_RELATIVE_PATH" = "relative:WindowsApplication1"

    4vbproj文件会增加少量新内容。

    <VisualStudioProject>

        <VisualBasic

            ProjectType = "Local"

            ProductVersion = "7.10.3077"

            SchemaVersion = "2.0"

            ProjectGuid = "{F894CF6B-BAC2-4F54-ACFA-DF317FFBBDBE}"

            SccProjectName = "SAK"

            SccLocalPath = "SAK"

            SccAuxPath = "SAK"

            SccProvider = "SAK"

        >

    红字部分是新增内容也不是很重要。这些内容将来可能导致在打开时提示Seem to be under source control but…

    伴随vbproj文件,本地目录中会产生一个*.vbproj.webinfo文件,内容是:

    <VisualStudioUNCWeb>

        <Web URLPath = "http://localhost/webapp1/WebApp1.vbproj" />

    </VisualStudioUNCWeb>

    看起来还比较重要,但是还没有发现过因这个文件的信息错误导致问题。

    注意:

    C#项目文件(csproj)中的SccProjectName不是“ SAK”这么简单,例如:

    SccProjectName = '"$/WebProjects/WebFramework/Src/ApplicationBlocks", KGBEAAAA'

    这是跟VB.NET项目很不同的。

     

    5SS.ini文件可能有变化,这是产生很多问题的根源,因此是特别要小心的!

    SS.iniVSS个人配置文件,这个文件在VSSDB/Data/../Users/[username]/目录。其内容主要是SSEXP当前项目、窗口状态等,更重要的内容是每个VSS Folder/Project对应的本地工作目录。

    要特别注意检查在Open From Source Control之后这个文件中有没有多几行

    其中Web Project肯定会改变工作目录还算正常。比如

    [$/]

    Dir (XA-APP-LUO2K3J) = C:/MPROJECT

    [$/WebProjects/Purchase1.0/Src/Purchase/PurchaseService]

    Dir (XA-APP-LUO2K3J) = c:/inetpub/wwwroot/LeyserService/PurchaseService

    [$/WebProjects/Purchase1.0/Src/Purchase/ApplicationUI/LeyserWeb]

    Dir (XA-APP-LUO2K3J) = c:/inetpub/wwwroot/LeyserWeb

    以上两个Project都是ASP.NET Web Application或者Web Service类型的Project,所以没有问题。

    如果出现其他类型的Project工作目录也出现在这个文件中例如

    [$/WebProjects/WebFramework/Src/OtherFrameworks/NHibernate]

    Dir (XA-APP-LUO2K3J) = C:/study/asp.net/ORM/nhibernate/src/NHibernate

    [$/WebProjects/Purchase1.0/Src/Purchase/DataAccess]

    Dir (XA-APP-LUO2K3J) = C:/WebProjects/Purchase1.0/Src/Purchase/DataAccess

    上面这两个目录(NhibernatePurchase.DataAccess.Order)中并没有Web项目,就说明有问题问题的原因有两种

    l         sln文件中包括了根本不存在的某个目录中的ProjectSource Control绑定信息。而这个Project是存在的,但是不是在绑定信息所描述的目录中。

    l         sln或者etp包含了非下级目录中的Project例如 C:/a/a.etp包含一个C:/b/b.vbproj

    因此,一要仔细检查sln文件中的绑定信息,即GlobalSection部分;二要避免在Solution或者etp中包含其下级目录之外其他路径下的Project文件。

    特别注意:

    在调整Solution结构之后,Project的存放路径、名称、所属etp发生变化,而sln文件却因为VS.NETSource Control Add-inBug可能没有及时、正确地更新,往往就会导致问题。

    与绑定有关的文件信息有哪些?它们之间是什么关系?出现问题的时候,是什么文件的什么内容与什么文件的什么内容不符了?

    与绑定有关的文件信息包括:

    l         Sln文件中的GlobalSection信息

    l         Etp或者proj文件中的scc*信息

    l         SolutionName.vssscc或者ProjectName.vspscc文件中的信息

    l         VSSDB/Users/username/ss.ini文件中的工作目录信息

    起关键作用、同时也最容易出问题的,其实只有sln文件中的GlobalSection信息

    针对每个Project,主要是5个方面的信息:

    SccProjectUniqueName1 = ProjName1//ProjName1.vbproj

    SccProjectTopLevelParentUniqueName36 = …//.....etp

    SccProjectName1 = /u0022$/Solution1/ProjName1/u0022,/u0020UAAAAAAA

    SccLocalPath1 = ProjName1

    SccProjectFilePathRelativizedFromConnection1 = …

    出现问题的时候,就是这几项内容之间、或者其中某项内容与实际路径之间有差异。

    尤其需要注意的是最后一项SccProjectFilePathRelativizedFromConnection1,一般不出现,如果出现,一般都会导致问题。这项内容的出现往往伴随着SccLocalPath=.,这种情况下,就会出现多个项目具有相同的绑定路径的问题,参见附录中的(7)。

    对于Web项目,还有一个描述URL信息的webinfo文件,这个文件与slnetp之间的内容不一致也是常见问题。

    另一个检查重点是ss.ini中的工作目录设置,如果出现没必要的或者错误的工作目录设置,一般就会出现绑定的问题。

    在一个已经绑定的Solution如何正确地添加新的etpProject

    正确的添加步骤:

    1Add New Project

    2Check In那些新项目

    3)保存所有文件(主要是为了保存sln

    最好用SSExp验证一下,然后关闭Solution再打开,再次验证。

    在一个已经绑定的Solution如何正确地添加已经存在的etpProject

    步骤上与添加新的etp或者Project没有差异当然第一步是Add Exsting Project。但是如果是过去曾经绑定过的etp或者Project最好删除对应的vspscc文件,以免RelativePath之类的信息导致问题。

     

    一种特殊情况是:如果被添加的项目已经在其他Solution中绑定,那就不能Unbind,此时可以用Add Project From Source Control命令来添加,不要用传统的Add Existing Project

    已经绑定的情况下如何修改Project所属的etp

    为了保险不要直接Remove然后Add Existing。最佳做法:

    1Unbind project。然后从现有etpRemove

    2)删除可能存在的对应Projectvspscc文件。

    3)将Project的目录移动到etp之下!!!

    4在新的etpAdd existing project

    5Save all 然后Check In

    6)关闭并再次打开。

     

    Project中添加一个Form时,需要注意什么,对绑定有何影响?

    要点是:一旦集成,那么所有操作都应该在IDE中进行,不要再用SSExp.exe进行手工操作。

    添加文件至VSS DB时,如果采用集成操作,相关文件都能自动添加或更新;否则,手工添加很可能漏掉某些资源文件,或者漏掉什么更新操作。另外,有些与用户有关的文件是不能放进VSS的,包括suo,*.vbproj.user等,手工操作很可能把这些文件也添加进去,导致用户环境互相干扰。

     

    如果需要修改一个Folder的名称,对绑定有何影响?

    如果按照MSDN的文档,这个操作将包含20个步骤!之后还需要很多手工操作。

    不如先Unbind单个Project,在外面改好之后,再添加进来,最后Check In

    另:

    对于文件,可在IDERename,然后CheckInVSS中的文件名将自动更新。

    一个已经绑定的Solution,如何更快地Unbind?必须逐个ProjectUnbind吗?

    如果一切正常,可以在VS.NET IDE中成批Unbind,不需要逐个Unbind

    如果想要将一个绑定的Solution源代码复制到一个演示机器上,如何保证在演示机器上正确打开Solution,而且不看到任何警告或错误信息?

    关键是要正确地UnbindUnbind之后,与Source Control有关的文件会被删除,项目文件中有关Source Control有关的信息也会被删除。

    Web Project的两种开发模式有什么不同?对VSS绑定有何影响?

    VS.NET管理Web项目文件有两种方式:File ShareFrontPage,前者是VS.NET新提供的方法,后者是过去Visual InterDev的方法。

    l         File Share 默认模式):利用wwwroot$共享来修改文件,其共享权限设置为:./Administrators./VS Developers都有Full Control权限。试验证明:如果是本地开发环境(VS.NETIIS在同一台机器),即使没有这个共享也能正常打开。可见,用本地IIS开发时根本没有使用这个共享。

    l         FrontPage All files are managed using the HTTP protocol. Source control requests from Visual Studio are forwarded through the FrontPage server extensions to the server installation of your source control provider (for example, Visual SourceSafe). The FrontPage access method does not support as many source control commands as File Share.  可见,两种模式的最大差别是支持的VSS操作命令不一样多FrontPage模式下,不能执行Branch/Merge等复杂操作。

    注意:

    尽管在集成状态下,一般都用File Share模式,但是slnetp中仍然需要用http路径来指定包含的Web Project,否则用C:/Inetpub/wwwroot/这样的路径将导致不同机器上无法正确打开的问题。

     

    为什么在添加一个新的Web Project的时候提示说必须提供一个URL Path而实际上本来就是URL Path

    这应该是VS.NET IDEBug在绑定信息紊乱的时候最好不要添加新的Project

     

    为什么提示http://localhost/ProjectName_1这样的URL Path

    VS.NET总是将Web项目的工作目录放到wwwroot下面,并且设置虚拟目录。如果现在的IIS中已经有重名的虚拟目录,就会提示projectName_n样式的URL Path

    如果不想看到这样的提示,应事先删除本地的同名虚拟目录。

     

    Web Project打开失败的常见问题和原因是什么

    最常见的问题包括:

    1Cannot open project之类的问题

    原因是:Solution文件(sln)中GlobalSection部分的信息紊乱,垃圾信息没有删除,或者有关工作路径的信息与实际路径不一致。

    2VSS中显示的Work Folder信息混乱

    除了Web项目之外,其他项目的工作目录应该与VSS中的结构一致,但是如果SolutionETP的结构与VSS中的Folder结构不一致导致VSSUsers/username/SS.ini中有关工作目录的信息多余或者与实际情况不一致。

    3Web项目的Location提示http://localhost/ProjectName_1

    这是因为本地IIS中已经存在同名的虚拟目录。避免问题的办法是在Open From Source Control之前,删除本地的重名虚拟目录。

    4)多个项目绑定路径相同的问题

    原因是SccLocalPath不正确,参见附录中的(7)。

     

    为了避免少出现问题,应注意:

    l         千万不要重复使用Open Source Control打开Solution。这个命令对一个Solution只能用一次如果第一次失败一定要清理硬盘上Get下来的文件而且要删除IIS VD和物理文件。之后才能再次使用Open From Source Control尝试打开。

    l         不要手工修改etpsln中包含的Project信息,特别是Web Projecthttp路径不要改成C:/Inetpub/wwwroot/路径。

    l         不要在sln或者etp中添加其下级目录之外其他路径的项目。

     

    对于常见问题的解决办法,参见附录。

    References

    Web Projects and Source Control Integration in Visual Studio .NET

    ms-help://MS.VSCC...1033/sccvs70/html/vetchWebProjectsSourceControlIntegrationInVisualStudioNET_Convert.htm

     

    附录:解决一个Solution绑定问题的步骤实录

     

    以下是在使用Open From Source Control打开一个已经设置绑定的Solution时,遇到的问题和解决的详细过程:

    (1) Web ProjectLocation问题

    提示输入Web Project的工作拷贝的Location时,出现三个Web项目的列表,而实际上应该只有两个。
    原因:其中一个Web ProjectPurchaseWeb—原先在wwwroot下面,后来把它的源文件调整到另一个Web ProjectLeySerWeb—下面的二级目录中,不再作为单独的Project,但是sln文件有关Source Control的信息却没有及时删除,成为垃圾信息。

    具体步骤:

    打开sln文件,找到如下信息:

    -----------------

    Global

    GlobalSection(SourceCodeControl) = preSolution

    SccNumberOfProjects = 56

    SccLocalPath0 = .

    CanCheckoutShared = false

    SolutionUniqueID = {EFD7F1A3-3977-4BE8-AFFC-D33AB7D8546C}

    ...

    SccProjectUniqueName33 = http://localhost/PurchaseWeb/PurchaseWeb.vbproj

    SccProjectTopLevelParentUniqueName33 = Purchase//Purchase.etp

    SccProjectName33 = /u0022$/…/Src/Purchase/ApplicationUI/PurchaseWeb/...

    SccLocalPath33 = http://localhost/PurchaseWeb/

    ----------------

    其中带有“33”字样的都是垃圾信息。用Notepad修改如下:

    l         删除带有“33”字样的垃圾信息,包括CanCheckoutShared = false

    l         将最后一个Project的信息(标号为“55”)转移到原来“33”所处的位置。

    l         将“55”改为“33”。

    l         GlobalSection(SourceCodeControl)下面第一行的SccNumberOfProjects = 55中的“56”改为“55”。

    Task Manager直接终止VS.NET之后,重新Open From Source Control,这个错误就没有了,仅显示两个Web Project的列表。

     

    (2) Unable to read project file问题

    重新打开时,确认Web ProjectLocation之后,出现错误提示: Path not found: LeyserWeb.vbproj

    原因:在包含该项目的etp文件中,指定了非URL路径。该ApplicationUI.etp文件部分内容为:

            <Views>

                <ProjectExplorer>

                    <File>LeyserWeb/LeyserWeb.vbproj</File> *******

                    <File>PurchaseWin/PurchaseWin.etp</File>

                </ProjectExplorer>

            </Views>

            <References>

                <Reference>

                    <FILE>LeyserWeb/LeyserWeb.vbproj</FILE> *******

                    <GUIDPROJECTID>{4ED7777B-…54774E1}</GUIDPROJECTID>

                </Reference>

    将红字部分的路径修改为URL地址形式:

                    <File>http://localhost/LeyserWeb/LeyserWeb.vbproj</File>

    这个问题得到解决。

     

    (3) Path not found问题

    强行终止、重新打开sln时,出现提示:$/WebProject/.../Microsoft.ApplicationBlocks.Data was not found. Would you like to browse for the project?

    这也是因为VS.NETBug,没有及时更新有关的信息导致的问题。原先这个Project是在另一个Folder下面,包含在另一个etp中,现在调整了,结果sln中只有部分信息得到更新:

    ---------- 红字部分是没有正确更新的内容

    SccProjectUniqueName44 = .. WebFramework//Src//ApplicationBlocks//Microsoft.ApplicationBlocks.Data//Microsoft.ApplicationBlocks.Data.vbproj

    SccProjectTopLevelParentUniqueName44 = ..//..//WebFramework//Src//Frameworks.etp

    SccProjectName44 = /u0022$/WebProjects/Purchase1.0/Microsoft.ApplicationBlocks.Data/u0022,/u0…

    SccLocalPath44 = ..WebFramework//Src//ApplicationBlocks//Microsoft.ApplicationBlocks.Data

    ---------------

    --------- SccProjectName44部分修改成:

    /u0022$/WebProjects/WebFramework/Src/ApplicationBlocks/u0022,/…

    ---------

    这个问题就解决了。

    (4) Project file not found问题

    强行终止、重新打开sln时,出现提示:File not found: Microsoft.ApplicationBlocks.Data.vbproj

    原因:sln中有关这个项目的SccLocalPath信息不正确,结果导致该项目在VSS中的工作目录单独设置,而且设置成了不正确的路径。

     

    有关工作目录的设置信息保存在下面这个文件中:

    //xafile/share/Project/MProject/Users/[username]/ss.ini

    本来,只需要为sln文件所在目录设置工作目录,下级目录就会自动按照项目层次结构自动设置,不需要ss.ini中的单独设置。当然,Web项目是一个例外,因为Web项目的工作目录总在wwwroot下面。对于其他项目,如果某个下级目录在ss.ini中存在工作目录设置信息,肯定就是有什么问题。

    ss.ini中有关工作目录的设置如下:

    [$/WebProjects/WebFramework/Src/ApplicationBlocks]

    Dir (XA-APP-LUO2K3J) = C:/MPROJECT/WebProjects/WebFramework/Src/ApplicationBlocks/Microsoft.ApplicationBlocks.Data

    红字部分是多余的部分,出现这个错误的原因,是sln文件中的信息不正确:

    --- sln.old

    SccProjectUniqueName44 = ..//..//WebFramework//Src//ApplicationBlocks// 

              Microsoft.ApplicationBlocks.Data//Microsoft.ApplicationBlocks.Data.vbproj

    SccProjectTopLevelParentUniqueName44 = ..//..//WebFramework//Src//Frameworks.etp

    SccProjectName44 = /u0022$/WebProjects/WebFramework/Src/ApplicationBlocks/u0022,/…

    SccLocalPath44 = ..//..//WebFramework//Src//ApplicationBlocks//Microsoft.ApplicationBlocks.Data

    ---

    其中的红字部分是多余的。删除红字部分,然后从ss.ini中删除这个项目的工作目录设置,这个问题就解决了。

     

    (5) Project does not exist问题

    强行终止、重新打开sln时,出现提示:project does not exist。

    这个问题的原因,是因为该project不在其所属etp的下级目录中,结果导致ss.ini中单独设置了工作目录,而Open From Source Control时,VS.NET仍然将该project的文件Get到了etp文件所在目录的下级目录中(这应该也是VS.NETBug),当然就找不到指定的csproj文件了。

    ss.ini中的信息如下:

    [$/WebProjects/WebFramework/Src/OtherFrameworks/NHibernate]

    Dir (XA-APP-LUO2K3J) = C:/study/asp.net/ORM/nhibernate-0.0.5000.6/src/NHibernate

    Sln文件中的相关信息如下:

    SccProjectUniqueName33 = ..//..//..//..//study//asp.net//ORM//nhibernate-0.0.5000.6//src//NHibernate//NHibernate-1.1.csproj

    SccProjectTopLevelParentUniqueName33 = ..//..//WebFramework//Src//Frameworks.etp

    SccProjectName33 = /u0022$/WebProjects/WebFramework/Src/OtherFrameworks/NHibernate/…

    SccLocalPath33 = ..//..//..//..//study//asp.net//ORM//nhibernate-0.0.5000.6//src//Nhibernate

    其中的红字部分就是不合适的,说“不合适”,是因为当初添加时该项目就是在etp所在目录之外,所以不能说是错误。但是,因为VS.NET没有按照指定的目录Get,导致项目无法打开,仍然是VS.NET的问题。

     

    先删除ss.ini中错误的工作目录设置,然后手工修改etp文件,将project的路径改为etp下面的子目录,保存后手工CheckIn这个etp文件,就可以解决这个问题。

     

    (6) sln中的垃圾信息的问题

    修改一个项目的目录名可能导致sln文件中的垃圾信息,然后导致ss.ini中的垃圾信息,进而导致项目无法打开。

    在看到Purchase.DataAccess.Order项目无法打开的提示之后,检查ss.ini发现一条垃圾信息:

    [$/WebProjects/Purchase1.0/Src/Purchase/DataAccess/Purchase.DataAccess.Order]

    Dir (XA-APP-LUO2K3J) = C:/MPROJECT/WebProjects/Purchase1.0/Src/Purchase/DataAccess/Purchase.DataAccess.Order

    与其他工作目录设置垃圾信息不同的是:这条信息指向的工作目录是正确的,而且也符合整个Solution的层次结构!

     

    检查sln文件,发现有两个有关Purchase.DataAccess.Order.vbprojsource control信息,其中一个是垃圾信息:

    SccProjectUniqueName36 = Purchase//DataAccess//Order.DataAccess//Purchase.DataAccess.Order.vbproj

    SccProjectTopLevelParentUniqueName36 = Purchase//Purchase.etp

    SccProjectName36 = /u0022$/WebProjects/Purchase1.0/Src/Purchase/DataAccess/Purchase.DataAccess.Order/u0022,/u0020YEEEAAAA

    SccLocalPath36 = Purchase//DataAccess//Order.DataAccess

    CanCheckoutShared = false

    其中,红字部分实际上已经修改为Purchase.DataAccess.Order,另外一条有关同一vbproj的信息正是修改后的路径。这应该也是VS.NETBug导致的问题。

    删除这条垃圾信息,并调整SccNumberOfProjects等信息之后,这个问题就解决了。

     

    (7) 多个项目绑定路径相同的问题

    如果sln有问题,可能导致很多项目的Server Binding路径相同,结果是:在Change Source Control对话框中,这些项目不能单独选中,选中一个,其他相同绑定路径的项目也会被一起选中。

     

    问题原因:

    SccLocalPath不正确,一般是SccLocalPathxx = .,本来应该是一个相对路径。另外,多出一个SccProjectFilePathRelativizedFromConnection设置。

    还有一个“症状”是:vbproj.vspscc文件中会有内容:

    "PROJECT_FILE_RELATIVE_PATH" = "relative:Purchase//BusinessFacade//Pruchase.Facade.SupplierAndRep"

    解决办法:

    SccProjectFilePathRelativizedFromConnection的内容转到SccLocalPath,然后删除前者,即:

    SccProjectUniqueName49 = ….SupplierAndRep.vbproj

    SccProjectTopLevelParentUniqueName49 = Purchase//Purchase.etp

    SccLocalPath49 = .

    CanCheckoutShared = false

    SccProjectFilePathRelativizedFromConnection49 = Purchase//BusinessFacade//Pruchase.Facade.SupplierAndRep//

    修改为:

    SccProjectUniqueName49 = ….SupplierAndRep.vbproj

    SccProjectTopLevelParentUniqueName49 = Purchase//Purchase.etp

    SccLocalPath49 = Purchase//BusinessFacade//Pruchase.Facade.SupplierAndRep

    CanCheckoutShared = false

     

    另一种情况,SccLocalPath不是句点,有内容,但是实际的项目文件不是在所属etp的下级目录中,结果就出现很多“..//”样式的相对路径:

    SccProjectUniqueName8 = ..//..//WebFramework//Src//ApplicationBlocks//Security//src//cs//Security//Security.csproj

    SccProjectTopLevelParentUniqueName8 = ..//..//WebFramework//Src//Frameworks.etp

    SccProjectName8 = /u0022$/WebProjects/WebFramework/Src/ApplicationBlocks/u0022,/...

    SccLocalPath8 = ..//..//WebFramework//Src//ApplicationBlocks

    CanCheckoutShared = false

    SccProjectFilePathRelativizedFromConnection8 = Security//src//cs//Security//

    对于这种情况,修改了SccLocalPath也不行。检查发现,这些C# Projectcsproj文件中,存在SccProjectName信息,例如:

    SccProjectName = '"$/WebProjects/WebFramework/Src/ApplicationBlocks", KGBEAAAA'

    而对于VB.NET项目,vbproj文件中只有很简单的信息:

    SccProjectName = "SAK"

     

    因此,C#项目与VB.NET项目的绑定信息管理是有差异的

    不管怎样,最好是将不是保存在sln文件所在目录之下的项目从solution中删除(当然,除了Web项目);或者,将sln文件放到所有项目文件目录最外面的某个目录中。总之是避免出现“..//”这样的相对路径。

     

    提示:

    l         只要出现SccProjectFilePathRelativizedFromConnection,肯定就是有问题!

    l         要避免etp包含其下级目录之外路径中的Project,也要避免sln中包含其下级目录之外路径中的etp或者Project

     

    (8) SccProjectName信息丢失的问题

    Change Source Control对话框中,发现很多项目的Server Binding都显示红色波浪号。

     

    退出IDE之后,发现ss.ini中多了很多Work Folder设置,大多数是不需要的(可以根据上级目录的工作目录确定),另有一个是错误的:

    [$/WebProjects/Purchase1.0/Src]

    Dir (XA-APP-LUO2K3J) = C:/MPROJECT/WebProjects/Purchase1.0/Src/Purchase.UnitTest/Purchase.Test.Order

    检查Purchase.Test.Order下面的内容,是一个同名的Project

    然后检查sln文件,发现所有显示Invalid状态的项目都缺少SccProjectName信息。

    解决办法:

    l         删除ss.ini中的工作目录设置。

    l         Check Out并重新打开sln

    l         重新设置StatusInvalid的项目的Server Binding。此过程中,可能需要Check Out一些项目文件(包括etp文件)。

    l         Check In发生变化的slnetpvbprojcsproj等文件。

     

    (9) Check In提示多余文件的问题

    IDE环境中Check In时,对话框中显示出的文件列表包括一些根本没有CheckOut的文件。

    检查发现,这些多余文件有三种可能:

    l         没有设置Server Binding的项目文件。

    l         尽管还在原先的Project中,但是在VSS中被移动到其他子目录了。

    l         项目中的隐藏文件,没有被添加到VSS中。例如上图中的nhibetnate-mapping-2.0.xsx文件。

     

    对于这些文件,Check In的含义实际上是Add to SourceSafe。对于移动过位置的文件,应在Check In之后,手工删除VSS中原位置的垃圾文件。

    展开全文
  • Eclipse插件Spring IDE在Eclipse的使用

    千次阅读 2016-01-27 15:32:28
    本文介绍如何利用Eclipse插件Spring IDE在Eclipse的使用。  Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。  问题提出:  采用Spring框架进行系统开发时,...
    本文介绍如何利用Eclipse插件Spring IDE在Eclipse中的使用。
      Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。
      问题提出:
      在采用Spring框架进行系统开发时,Bean的配置文件XML的书写、XML文件的内容校验及Bean之间的依靠关系查看等工作,假如能够采用合适的工具来完成,会成倍提高开发效率。
      解决方法:
      SpringIDE是Spring官方网站推荐的Eclipse插件,可提供在开发Spring时对Bean定义文件进行验证并以可视化的方式查看各个Bean之间的依靠关系等。
      同时,建议结合Eclipse XMLBuddy插件进行XML文件编辑与校验,是个不错的选择。
      安装说明
      JDK:1.5.0从http://Java.sun.com上去下载安装
      Eclipse:3.1.2从http://www.eclipse.org 上去下载解压
      Spring 1.2.8从http://www.springframework.org 上去下载解压
      Spring IDE 1.3.2从http://springide.org 上去下载
      XMLBuddy 2.0.72从http://www.xmlbuddy.com/ 上去下载
      Spring IDE 1.3.2 Update地址为:http://springide.org/updatesite/
      治理技巧
      提示:新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去,一大堆,累死你:(
      前提是你已经下载解压并设置好Eclipse工具,比如解压在E:\OpenSource\Eclipse\目录下,以下这个目录以%ECLIPSE_HOME%来进行表示;
      此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的;
      在%ECLIPSE_HOME%下建立一个PlugInsNew的目录;
      比如:E:\OpenSource\Eclipse\PlugInsNew
      假如你下载了一个新的插件,比如叫做:XYZ
      那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录,目录里面是eclipse目录,eclipse目录包含有features与plugins两个子目录;结构如下图所示:


      把下载的新插件的文件放在以下相应目录中;
      %ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
      %ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
      建立相关的.link的文件;
      然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件
      内容如是:
      path=E:/OpenSource/Eclipse/PlugInsNew/XYZ
      就一行这样的路径指示而已。
      这样,假如你下载了多个插件就可以如法炮制建立多个Link文件,想加载哪个插件就把哪个插件的Link文件放到%ECLIPSE_HOME%\links的目录中即可,使用与治理都很方便,建议千万不要放在默认的安装目录中,这样对于升级Eclipse主程序也方便一些;当然假如你喜欢用Findand Install…进行安装的话也可以的;
      假如上面你的%ECLIPSE_HOME%与此不同,请修改XYZ.link文件里的路径。
      删除插件,先关闭Eclipse;
      删除%ECLIPSE_HOME%\links\XYZ.link文件即可
      删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件
      重新启动Eclipse,这样就可以了。假如插件没有生效或者没有删除,请加上-clean进行启动Eclipse,即Eclipse.exe–clean
      插件安装验证及记录详见:Eclipse的workspace下面的.metadata\.log文件,比如:%ECLIPSE_HOME%\workspace\.metadata\.log文件,有问题的话,打开这个文件看看并进行解决。确认安装
      此插件安装方法采用上一节的《Eclipse使用技巧之插件治理》
      重新启动Eclipse后,在Help è About Eclipse SDK è Plug-inDetails你可以看到由“Spring IDE Developer”提供的“SpringIDE”版本为“1.3.2”插件及相关的Graph、UI及UI Search插件,如下图所示:


      相关要求
      注重:为了让Spring IDE插件能够显示可视化的Bean结构图形及Bean之间的依靠关系,需要EclipseGEF(Graphical EditingFramework)的支持,自己下载并解压安装,安装技巧同上《Eclipse使用技巧之插件治理》。
      Spring1.2系列当前最新的稳定版本为1.2.8,下载时可以选择包含Spring所依靠的一些开源包的文件spring-framework-1.2.8-with-dependencies.zip,假如你已经清楚并有了Spring所依靠的相关开源包,就单独下载spring-framework-1.2.8.zip即可。建议下载前者。
      
      
      解压后目录结构及包的说明如下:


      dist目录下是Spring的发布包,关于发布包下面会具体进行说明;
      docs目录下是相关的文档,包括有Springapi的javadoc、reference参考指南、Spring的taglib标签使用文件及SpringMVC的MVC-step-by-step讲解与示例;
      lib目录下是Spring所依靠的第三方开源包;
      mock目录下是Spring辅助应用测试的Mock源程序;
      samples目录下是Spring的示例源程序及简单的webapp示例框架的示例配置,值得好好学习的有jpetstore及petclinic,当然其它的countries、imagedb、tiles-example也可以好好参考一下;
      src目录下是Spring的源程序;
      test目录下Spring的单元测试源程序;
      tiger目录下是Java 1.5 Tiger方面的相关及测试源程序。
      Spring包结构说明
      接下来具体说说dist目录下jar包的相关内容
      spring.jar是包含有完整发布的单个jar包,spring.jar中除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
      除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。
      spring-core.jar
      这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
      spring-beans.jar
      这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和治理bean以及进行Inversion of Control /DependencyInjection(IoC/DI)操作相关的所有类。假如应用只需基本的IoC/DI支持,引入spring-core.jar及spring-beans.jar文件就可以了。
      spring-aop.jar
      这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务治理(DeclarativeTransaction Management),也要在应用里包含这个jar包。
      spring-context.jar
      这个jar文件为Spring核心提供了大量扩展。可以找到使用SpringApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如Velocity、FreeMarker、JASPerReports集成的类,以及校验Validation方面的相关类。
      spring-dao.jar
      这个jar文件包含Spring DAO、SpringTransaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。
      spring-hibernate.jar
      这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。
      spring-jdbc.jar
      这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。
      spring-orm.jar
      这个jar文件包含Spring对DAO特性集进行了扩展,使其支持iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依靠spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。
      spring-remoting.jar
      这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、HttpInvoker、JAX-RPC)方面的类。
      spring-support.jar
      这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COSMail)、任务计划Scheduling(Timer、Quartz)方面的类。
      spring-web.jar
      这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
      spring-webmvc.jar
      这个jar文件包含SpringMVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。当然,假如你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
      spring-mock.jar
      这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。
      如何选择这些发布包,决定选用哪些发布包其实相当简单。假如你正在构建Web应用并将全程使用Spring,那么最好就使用单个全部的spring.jar文件;假如你的应用仅仅用到简单的Inversionof Control / DependencyInjection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;假如你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性的jar文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。当然你可以采用其它的一些工具来设法令整个应用包变小,节省空间的重点在于准确地找出自己所需的Spring依靠类,然后合并所需的类与包就可以了。Eclispe有个插件叫ClassPathHelper可以帮你找找所依靠的类。
      
      
      Spring包依靠说明spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各个的基本。
      spring-beans.jar需spring-core.jar/cglib-nodep-2.1_3.jar
      spring-aop.jar需spring-core.jar/spring-beans.jar/cglib-nodep-2.1_3.jar/aopalliance.jar
      spring-context.jar需
      spring-core.jar/spring-beans.jar/spring-aop.jar/commons-collections.jar/aopalliance.jar
      spring-dao.jar需spring-core.jar/spring-beans.jar/spring-aop.jar/spring-context.jar
      spring-jdbc.jar需spring-core.jar/spring-beans.jar/spring-dao.jar
      spring-web.jar需spring-core.jar/spring-beans.jar/spring-context.jar
      spring-webmvc.jar需spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
      spring-hibernate.jar需
      spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-jdbc.jar/spring-orm.jar/spring-web.jar/spring-webmvc.jar
      spring-orm.jar需
      spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-jdbc.jar/spring-web.jar/spring-webmvc.jar
      spring-remoting.jar需
      spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-context.jar/spring-web.jar/spring-webmvc.jar
      spring-support.jar需
      spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-context.jar/spring-jdbc.jar
      spring-mock.jar需spring-core.jar/spring-beans.jar/spring-dao.jar/spring-context.jar/spring-jdbc.jar
      插件介绍
      我们简单地创建一个示例工程,里面包含有一个接口类与两个实现该接口的实现类进行演示说明使用的方法。
      需要引入spring.jar、commons-logging.jar、log4j.jar
      单个引入需要引入spring-core.jar、spring-beans.jar、spring-context.jar
      接口类:IHelloWorld.java
      public interface IHelloWorld
      {
       String sayHelloWorld();
      }
      实现类一:HelloWorld1.java
      public class HelloWorld1 implements IHelloWorld
      {
      public HelloWorld1()
      {
       super();
      }
      public String sayHelloWorld()
      {
       return "Hello World HelloWorld1";
      }
      }
      实现类二:HelloWorld2.java
      public class HelloWorld2 implements IHelloWorld
      {
      public HelloWorld2()
      {
       super();
      }
      public String sayHelloWorld()
      {
       return "Hello World HelloWorld2";
      }
      }
      根据常用的三层与Spring的最佳实践,将配置文件分成了四个
      beanRefFactory.xml负责总装,由SingletonBeanFactoryLoca
    tor来装入
      通过ClassPathXmlApplicationContext来把其它三个模块的文件引入
      beanRefDataAccess.xml负责DAO,与数据库相关的bean都定义在这里
      beanRefService.xml负责Service层的bean定义
      beanRefMVC.xml负责Spring MVC方面相关的bean定义等等
      以下配置文件的bean定义为演示所用,各自的内容如下:
      beanRefFactory.xml的内容如下:
      <xml version="1.0" encoding="UTF-8">
      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
      <bean id="beanFactory"class="org.springframework.context.support.ClassPathXmlApplicationContext">
      <constrUCtor-arg>
      <list>
      <value>beanRefDataAccess.xml</value>
      <value>beanRefService.xml</value>
      <value>beanRefMVC.xml</value>
      </list>
      </constructor-arg>
      </bean>
      </beans>
      
       beanRefDataAccess.xml的内容如下:
      <xml version="1.0" encoding="UTF-8">
      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
      <bean id="helloWorldDAO1" class="HelloWorld1"/>
      <bean id="helloWorldDAO2" class="HelloWorld2"/>
      </beans>
      beanRefService.xml的内容如下:
      <xml version="1.0" encoding="UTF-8">
      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
      <bean id="helloWorld1" class="HelloWorld1"/>
      <bean id="helloWorld2" class="HelloWorld2"/>
      <bean id="springDemoConstructor"class="SpringDemoConstructor">
       <constructor-arg>
       <value>Spring IDE Constructor</value>
       </constructor-arg>
       <property name="helloWorld">
       <ref bean="helloWorld1"></ref>
       </property>
      </bean>
      <bean id="springDemoSetter" class="SpringDemoSetter">
       <property name="hello" value="Spring IDE Setter"/>
       <property name="helloWorld">
       <ref bean="helloWorld2"></ref>
       </property>
      </bean>
      </beans>
      beanRefMVC.xml的内容如下:
      <xml version="1.0" encoding="UTF-8">
      <!DOCTYPE beans PUBLIC
      "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
      <bean id="helloWorldMVC1" class="HelloWorld1"/>
      <bean id="helloWorldMVC2" class="HelloWorld2"/>
      </beans>
      右键项目工程:可以看到“Add Spring Project Nature”菜单,单击它


      细心的你一定可以看到项目工程SpringIDEDemo前面的图标变成了一个S的标志,而不是原来的J,当然项目里与Spring相关的文件都会在图标上显示一个S标志。J
      右键弹出的菜单里就会有个“Remove Spring Project Nature”的菜单了。
      你选择这个菜单进行移除后就不能进行以下的相关操作了。


      Window è Show View è Other… è 可以看到SpringIDE,打开它,如下所示,所中它并确定。


      可以看到如下的视图,右键工程的名称,在弹出的Properties菜单上点击它


      弹出属性框,让我们来添加配置文件


      确定后,可以看到刚才选择的四个配置文件已经在里面了,再次确定。


      在Spring Beans视图里展开工程后,便可以看到增加进来的四个配置文件了。


      也可以将配置文件放到配置集合里,如下所示:

      这样确定以后,可以看到四个文件都属于Service的节点下面,如下所示。

      再次确定后,在SpringBeans视图里看到Service节点,展开它,可以看到所有配置文件里的bean都在这里列出来了。  
      
      展开显示两个定义的bean结点,右键其中的一个结点,弹出四个菜点,最后一个就是上面的配置菜单,不再讲解了,我们选中“OpenConfig File”菜单


      于是就会自动打开配置文件,并定位到bean的定义位置上面去了,如下所示,方便进行查看与改动。

      在右键弹出的菜单点选中“Open Bean Class”,


      就会自动定位到对应的类文件里去了,如下所示。


      在右键弹出的菜单点选中“Show Graph”,


      就会把当前这个bean以图形的方式显示出来,如下所示。


      但是这个演示的文件仅是一个独立的bean,没有任何关联等,下面会演示关联等。
      在SpringBeans视图里展开工程后,选中src/beanRefSerice.xml配置文件,在右键弹出的菜单点选中“ShowGraph”


      就会把当前整个配置文件的内容以bean图形的方式显示出来,如下所示。


      以下演示bean的引用及构造注入与setter注入何关联等,更多的操作类似了。
      定义一个接口类ISpringDemo.java,有两个方法
      public interface ISpringDemo
      {
      IHelloWorld getHelloWorld();
      String getHello();
      }
      实现类一SpringDemoConstructor.java,含有构造注入及setter注入
      public class SpringDemoConstructor implements ISpringDemo
      {
      private String hello;
      private IHelloWorld helloWorld;
      
      public SpringDemoConstructor(String hello)
      {
       this.hello = hello;
      }
      
      public String getHello()
      {
       return hello;
      }
      public IHelloWorld getHelloWorld()
      {
       return helloWorld;
      }
      public void setHelloWorld(IHelloWorld helloWorld)
      {
       this.helloWorld = helloWorld;
      }
      }
      实现类二SpringDemoSetter.java,都是setter注入
      public class SpringDemoSetter implements ISpringDemo
      {
      private String hello;
      private IHelloWorld helloWorld;
      public String getHello()
      {
       return hello;
      }
      public void setHello(String hello)
      {
       this.hello = hello;
      }
      public IHelloWorld getHelloWorld()
      {
       return helloWorld;
      }
      public void setHelloWorld(IHelloWorld helloWorld)
      {
       this.helloWorld = helloWorld;
      }
      }
      配置文件beanRefService.xml增加bean定义,成为如下,红字为新增的
      <xml version="1.0" encoding="UTF-8">
      <!DOCTYPE beans PUBLIC
      "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
      <bean id="helloWorld1" class="HelloWorld1"/>
      <bean id="helloWorld2" class="HelloWorld2"/>
      <bean id="springDemoConstructor"class="SpringDemoConstructor">
       <constructor-arg>
       <value>Spring IDE Constructor</value>
       </constructor-arg>
       <property name="helloWorld">
       <ref bean="helloWorld1"></ref>
       </property>
      </bean>
      <bean id="springDemoSetter" class="SpringDemoSetter">
       <property name="hello" value="Spring IDE Setter"/>
       <property name="helloWorld">
       <ref bean="helloWorld2"></ref>
       </property>
      </bean>
      </beans>
      
       注重:
      假如bean是定义在同一个文件里的可以用
      <ref local="helloWorld2"></ref>
      假如不是在同一个配置文件里的,要用
      <ref bean="helloWorld2"></ref>
      要不然会报到bean找不到!
      这样配置完成后,我们切换到“Spring Beans”视图,在beanRefService.xml节点上右键打开“ShowGraph”菜单,可以看到如下所示:


      这时bean里面简单的引用关系就表现出来了。


      在bean图上右键,会打开三个操作菜单:
      Open Java Type即定位到bean的类文件上面;
      Open Config File即定位到bean的xml配置文件上面;
      Show In Beans View即定位到“Spring Beans”的视图里的具体某个节点上,如下所示。

      此时我们可以在配置集合的Service节点上面右键,选择“Show Graph”


      这样就会显示出所有的配置文件集合里的所有bean文件及其关联引用情况,如下图。


      带圈的P图标表示是属性,即setter方法注入,带圈的C图标表示构造注入。箭头表示引用关系了。J
      中间一排演示用的四个bean没有关联引入,就光杆司令地在那里排队了啦J
      最下面的带圈的C后面又跟着一大排参数,表示集合类型的了。如list
      SpringIDE提供错误检查功能,比如我在配置文件中输入一个不存在的类的名称,保存后,就会在边上出现红色提示,鼠标移上去就会出现提示信息,如下图所示。


      当然也会有Problems视图里显示相应的错误信息,如下图:


      由于打开XML文件时会根据XML文件里定义的DTD去网上查找相应的DTD文件,这样导至打开的时候会相当慢,非凡是假如你的机器上不了外网的话,就更慢了。
      解决的办法有两个:
      一、在本机开启Web服务(如Tomcat等等),并设置端口为80,然后根据DTD的目录结构建立相应的结构,并把DTD文件放进去。然后在hosts文件里把本机的地址映射到相应的DTD指定的网站去,如:
      127.0.0.1// www.springframework.org
      这样打开XML文件时就会在本机寻找DTD文件进行验证,速度就快很多了J
      二、打开XMLBuddy插件的安装目录,并找到其中的cache目录,比如:%ECLIPSE_HOME%\PlugInsNew\xmlbuddy\eclipse\plugins\com.objfac.xmleditor_2.0.72\.cache
      打开meta.xml文件,一看就知道怎么处理了吧,如法炮制,选把DTD文件拷贝到这个cache目录里,再增加内容到meta.xml里来,比如:
      <file>
      <pub>-//SPRING//DTD BEAN//EN</pub>
      <abs>http://www.springframework.org/dtd/spring-beans.dtd</abs>
      <rel>spring-beans.dtd</rel>
      </file>
      要增加其它的DTD文件方法类似,不断地增加说明与DTD文件即可。
      于是在编辑XML文件时就会有相关的提示及错误提示信息,可以减少一些书写XML文件时发生的低级错误了。


      测试与运行
      先建立一个Log4J的配置文件log4j.properties,内容如下
      # Set root logger level to ERROR and its only appender toR.
      log4j.rootLogger = INFO,R
      # R is set to be a DailyRollingFileAppender.
      log4j.appender.R =org.apache.log4j.DailyRollingFileAppender
      log4j.appender.R.File = Application.log
      log4j.appender.R.DatePattern = yyyy-MM-dd'.log'
      log4j.appender.R.layout = org.apache.log4j.PatternLayout
      log4j.appender.R.layout.ConversionPattern = %-d{yyyy-MM-ddHH:mm:ss} [%c]-[%p] %m%n
      
       再创建一个ServiceFactory.java静态类,用来做单元测试方便一些
      import org.springframework.beans.factory.BeanFactory;
      importorg.springframework.beans.factory.access.BeanFactoryLocator;
      importorg.springframework.beans.factory.access.BeanFactoryReference;
      importorg.springframework.beans.factory.access.SingletonBeanFactoryLocator;
      public final class ServiceFactory
      {
      private static BeanFactoryLocator bfLocator = null;
      private static BeanFactoryReference bfReference = null;
      private static BeanFactory factory = null;
      static
      {
       bfLocator = SingletonBeanFactoryLocator.getInstance();
       bfReference = bfLocator.useBeanFactory("beanFactory");
       factory = bfReference.getFactory();
      }
      
      private ServiceFactory()
      {
       super();
      }
      public static Object getBeanByName(final String beanName)
      {
       return factory.getBean(beanName);
      }
      }
      做成静态的这样我们可以ServiceFactory.getBeanByName(“beanname”)就可以得到相应的bean了。
      测试类SpringIDETest.java代码如下:
      import junit.framework.TestCase;
      public class SpringIDETest extends TestCase
      {
      private IHelloWorld helloWorld = null;
      private ISpringDemo springDemo = null;
      private final static String hello1 = "Hello WorldHelloWorld1";
      private final static String hello2 = "Hello WorldHelloWorld2";
      private final static String helloset = "Spring IDE Setter";
      private final static String hellocon = "Spring IDEConstructor";
      public void testSpringBeans()
      {
       helloWorld =(IHelloWorld)ServiceFactory.getBeanByName("helloWorld1");
       assertEquals(hello1,helloWorld.sayHelloWorld());
       helloWorld =(IHelloWorld)ServiceFactory.getBeanByName("helloWorld2");
       assertEquals(hello2,helloWorld.sayHelloWorld());
      }
      public void testIoCConstructor()
      {
       //Constructor
       springDemo =(ISpringDemo)ServiceFactory.getBeanByName("springDemoConstructor");
       assertEquals(hellocon,springDemo.getHello());
      assertEquals(hello1,springDemo.getHelloWorld().sayHelloWorld());
      }
      public void testIoCSetter()
      {
       //Setter
       springDemo =(ISpringDemo)ServiceFactory.getBeanByName("springDemoSetter");
       assertEquals(helloset,springDemo.getHello());
      assertEquals(hello2,springDemo.getHelloWorld().sayHelloWorld());
      }
      }
      Run As JUnit Test之,绿色打勾全部通过就收工走人了。。。J
      当然也可以打开Application.log文件查看输出一些什么信息。
    展开全文
  • MAME: 如何进行代码级的IDE调试?

    千次阅读 2008-06-10 10:10:00
    http://www.cnblogs.com/neoragex2002/articles/740643.htmlA.Mingw32环境的MAME代码级IDE调试Insight debugger是Redhat的GnuPro...它win32平台下也有对应的Mingw32 build,因此跟mame的编译环境是完全匹配的。ins

    http://www.cnblogs.com/neoragex2002/articles/740643.html

    A.Mingw32环境的MAME源代码级IDE调试

    Insight debugger是Redhat的GnuPro开发套件之一,一个基于Tcl/Tk的gdb前端,纯绿色而又短小精悍。它在win32平台下也有对应的Mingw32 build,因此跟mame的编译环境是完全匹配的。insight比较适合熟悉gdb和linux环境的开发者使用。以下是使用insight 6.3来对mame进行源代码级调试的基本步骤:

    1. 按照文献[1]的方式配置好Mingw32,将其安装至c:/mingw
    2. 将Insight解压至c:/insight
    3. 'make clean',删除所有的objs,重置编译环境
    4. 'make SYMBOLS=1',编译mame,别忘了符号编译选项'SYMBOLS=1'
    5. 启动C:/insight/bin/insight.exe
    6. 菜单File->Target Settings->Connection->Target,选择'Exec'
    7. 在下面的ExecArguments里面添上mame的命令行启动参数,如ddragon2
    8. File->Open,加载刚刚编译好的mame.exe
    9. Run->Run,启动程序,然后便可以设置断点、单步跟踪了

    mame_insight.PNG


    B.Visual Studio 2005环境下的Mame命令行编译

    Visual Studio 2005无疑是Win32平台中最好的编译环境,那么我们可以直接利用它来编译mame吗? 当然可以! 实际上,Mame Team在编写makefile的时候早已考虑到了这一点,他们在windows/windows.mak定义了一个MSVC_BUILD标志,只要我们在make时开启这个标志,即可使用vc2005中的cl.exe、link.exe来替换mingw中的gcc等来进行编译和链接。下面是使用vs2005来编译mame的基本步骤:

    1. 确信已经安装好了Visual Studio 2005和DirectX SDK(必不可少)
    2. 确信已按照文献[1]的方式正确配置好了Mingw环境(因为我们要用到Mingw的make.exe)
    3. 在c:/mame中建立一个批处理文件setupvc.bat,用来建立vc编译所需的环境变量,其内容见后面
    4. 运行一次setupvc.bat,设置好所有编译相关的环境变量
    5. 然后'make clean',以防止残留下来的gcc objs干扰vc编译
    6. 输入'make MSVC_BUILD=1'即可开始编译
    7. 如果嫌麻烦,可以直接修改osd层的windows.mak,将1设置成为MSVC_BUILD的默认值
    8. Tips 1: vs2005提供了一个名为'Visual Studio 2005 Command Prompt'的控制台快捷方式,同时自动设置相关的环境变量,参照这一思路,我们也可以创建一个'MAME Command Prompt'的console shortcut,将其属性中的目标设置成'%comspec% /k c:/mame/setupvc.bat',起始位置设成c:/mame即可,这样便不必每次手工输入'setupvc.bat'了,很方便
    9. Tips 2: MSVC_BUILD标志可以配合TARGET、SYMBOLS和PM、I686等标志一起使用
    10. Tips 3: Mame guys写了个非常smart的转换器,用来实现功能等价的gcc编译选项与不同版本的cl选项之间的相互转换,其源码为windows/vconv.c,感兴趣的可以读一下,其配置思想值得借鉴

     

    rem 以下是setupvc.bat的脚本内容

    @echo off
    rem -------------------------------------------------------------------------------
    rem 调用vs2005所提供的环境变量设置脚本

    call 
    "C:/Program Files/Microsoft Visual Studio 8/VC/vcvarsall.bat" x86
    rem -------------------------------------------------------------------------------
    rem 将DirectX SDK的include/lib路径添加至环境变量,请根据实际情况加以修改

    set INCLUDE
    =%INCLUDE%;C:/Program Files/Microsoft DirectX SDK (October 2006)/Include
    set LIB
    =%LIB%;C:/Program Files/Microsoft DirectX SDK (October 2006)/Lib/x86
    rem -------------------------------------------------------------------------------


    C.Visual Studio 2005 IDE环境下的Mame源代码级调试

    既然能够用vs2005来编译mame,那么使用华丽而又强大的vs2005 IDE来对其进行源代码级调试便是非常轻松的一件事了,对于绝大多数不太熟悉linux环境的开发人员而言,这可比gdb/insight调试要轻松得多! 紧接着上面的vs2005编译步骤,下面继续给出调试步骤:

    1. 运行setupvc.bat,确保vs2005编译环境变量正确建立
    2. 'make clean',删除所有objs,重置编译环境
    3. 'make MSVC_BUILD=1 SYMBOLS=1',这里的SYMBOLS=1是关键,如果没有设置这个符号编译选项,将无法进行源代码级调试
    4. 编译完成之后,打开vs2005 IDE, File->Open->Project/Solution->Files of type选择Executable Files,注意,不是Open->File...,而是Open->Project/Solution...
    5. File->Open->Project/Solution,加载刚刚编译所得的mame.exe
    6. 在Solution Explorer中设置一下mame.exe的Properties,在Command Arguments中添加mame的命令行参数,如ddragon2
    7. 然后Debug->Step Over,调试启动,看到了吗? 梦寐以求的IDE调试环境! 呵呵

    mame_vs2005.PNG

    参考文献:
    [1]
    MAME架构、编译及配置浅析, Neoragex2002's Weblog, 2006.6
    [2]
    Building MAME using Microsoft Visual Studio compilers, MameDev.org, 2006

    展开全文
  • 返回:贺老师课程教学链接 项目要求【项目4 - 处理C++源代码的程序】 CodeBlocks等IDE中都提供了代码格式整理的...编译,要对源程序进行词法检查和语法检查,后续还要进行目标代码生成、代码优化等工作。相关的技
  • 修改linpack源程序时遇到的各种问题.

    千次阅读 2016-05-27 23:09:03
    Main函数哪里?... 觉得随便找找看可能更方便, 然而linpack的HPL生成的可执行文件为xphl, 别说同名的就类似的.c文件都没有, 作为一个习惯了上层高级语言编程,习惯了使用IDE的老一代C#码农来说, linux下的C
  • VC中IDE的一些使用小技巧

    千次阅读 2012-10-09 11:19:30
    1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_...
  • Eclipse是一个通用型的开发环境,学习过程,对Eclipse配置原理的深入理解有助于我们更好的使用这个强大的开发工具。
  • 如何阅读他人的项目代码程序

    千次阅读 多人点赞 2018-09-30 21:26:01
    相信很多人和我一样,面对着别人密密麻麻的代码,宁愿自己从零开始编写自己的代码,也不...然而,阅读他人的项目源码是每一个写程序的人(我只是个项目需要的时候偶尔写程序的,不敢自称程序员)必须经历的事情。...
  • IDE中开发的项目打包后生成 zip 格式的包,解析器通过读取 zip 包实时解析运行,有点类似中间语言的概念,但我这里生成的 zip 包中主要以 xml 文件为主,通过 xml 文件对项目的 UI,业务,数据结构 进行描述。
  • STM32F103C8T6Arduino IDE里编程

    万次阅读 多人点赞 2018-11-23 17:46:08
    时代进步,极客们手上的单片机也从古老的51、PIC变成了AVR、STM32,也出现了各种便捷的开发工具,例如盛极一时的Arduino;不过Atmega328所属的AVR单片机,终究还是老点了,算起来差不多是20年前的主流了,现在流行...
  • 我做的东西原本是利用ARDUINO MEGA2560及各种模块搭建起来的,程序自然也是用ARDUINO IDE写的。但这种东拼西凑的产品自然不够好,更主要的是,之前ARDUINO板的电源烧掉了,我看了下原理图,当电脑USB电源和12V电源都...
  • Visual Studio 2005 IDE 技巧和窍门

    千次阅读 2007-03-20 20:32:00
    发布日期: 2007-02-26 | 更新日期: 2007-02-26James LauMicrosoft 项目经理适用于:Microsoft Visual Studio 2005摘要:Visual Studio 2005 是目前业内一流的开发工具,我想此与大家分享一些使用...
  • 前言:本文教你怎么用javac和java命令,讲解了classpath的原理,以及如何...具体代码我的GitHub可以找到 https://github.com/h2pl/MyTech 喜欢的点一下星哈谢谢。 文章首发于我的个人博客: https://h...
  • 返回:贺老师课程教学链接 实践要求【项目5-编程处理C代码】CodeBlocks等IDE中都提供了代码格式整理的功能。我们可以编写程序,处理的数据就是用C写的代码文件。C源文件是一种文本文件,可以通过程序进行操作...
  • GVIMWindows上也是强大的IDE

    千次阅读 2015-02-27 17:22:30
    不用多说 我用配置完的一个VIM包 里面含有很多的插件 下载地址下载后直接解药到D盘下酒可以使用 要是不这个目录下 请你更改对应的配置文件:下面是配置文件的内容:if(has("win32") || has("win95") || has("win...
  • ROS集成开发环境IDE----RoboWare开源

    千次阅读 2018-06-20 10:24:42
    http://cn.roboware.me/#/homegithub: https://github.com/TonyRobotics/RoboWare-Studio目前主要有三款软件产品:Designer+Studio+Viewer,如下...----RoboWare Studio - Open SourceRoboWare Studio is an IDE ...
  • 汇编IDE的选择与配置

    千次阅读 2012-09-22 16:04:03
    IDE,全称集成开发环境,对于MASM的IDE,我想每个人最低的要求都至少要求程序时不需要命令行手工输入命令来编译再链接,这样很不方便,如果代码有错,就需要用编辑器(一般是计事本)修改然后再重复的编译、...
  • Jetbrains IDE 使用教程

    万次阅读 2018-10-26 12:02:21
    Jetbrains系列IDE算是我认为做的最好的集成开发工具了,用惯了以后感觉其他IDE都有各种各样的问题。但是Jetbrains系列IDE由于是全英文的,导致很多人很难上手。因此这篇文章就来介绍一下Jetbrains系列的常用设置和...
  • Python IDE 测评

    千次阅读 2005-03-22 13:42:00
    作者: David Mertz 2004-08-20 11:45:02 关键字:Python IDE David Mertz 博士 (mertz@gnosis.cx)Accidental Ideologue, Gnosis Software, Inc.David Mertz 介绍了 6 种 Python 集成开发环境,并比较了其特性、平台...
  • NetBeans IDE Java快速入门教程

    千次阅读 2016-08-11 11:29:06
    NetBeans IDE Java快速入门教程 ...向生成的源文件添加代码3 ...编译并运行程序4 ...生成并部署应用程序5 ... IDE ,选择“文件”>“新建项目”(Ctrl-Shift-N),如下图所示。 “新建项目”向导,展开
  • 熟悉Visual C++ IDE

    千次阅读 2015-04-22 16:42:59
    集成开发环境是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。简言之,IDE就是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。 Visual ...
  • 硬核,这 3 款 IDE 插件让你的代码牢不可破

    千次阅读 多人点赞 2021-01-25 12:33:45
    03、SonarLint SonarLint 可让我们编写代码的时候就对错误和漏洞进行修复,像拼写检查器一样,可以即时突出地显示出编码的一些问题,并提供清晰的补救指导,方便我们提交代码之前就解决它们。 SonarLint 支持...
  • liteIDE搭建Go Golang 开发环境图文详解

    千次阅读 2018-06-12 17:15:13
    LiteIDE是一款专为Go语言开发而设计的跨平台轻量级集成开发环境(IDE),基于Qt开发,支持Windows、Linux和Mac OS X平台。LiteIDE是最早的面向Go语言的IDE之一,这里就为大家介绍一下结合LiteIDE搭建Go开发环境,需要...
  • 学习完本教程后,您将对如何 IDE 创建和运行应用程序有一个基本了解。 学习完本教程所需的时间不到 10 分钟。 学完本教程后,您可以转至文档、培训和支持页链接的学习资源。这些学习资源提供了综合性...
  • 不用IDE写C#的Hello World

    千次阅读 2015-03-05 11:09:27
    用Visual Studio等IDE写C#的Hello World非常简单,但脱离了IDE你能不能打印出Hello World呢?这不是说工作时脱离IDE,而是学习一下CLR的执行模型.  Hello World 新建一个记事本,输入如下代码,另存为Hello...
  • Eclipse插件之Spring IDE

    万次阅读 2007-07-31 11:25:00
    本文介绍如何利用Eclipse插件Spring IDE在Eclipse的使用。 Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。 问题提出: 采用Spring框架进行系统开发时,Bean的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,871
精华内容 12,748
关键字:

在ide中打开对应源程序