- 浏览: 1554458 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
http://www.codeproject.com/KB/macros/Lexware_AssemblyReference.aspx
Introduction
Visual Studio 2005 / 2008 both lack a good way to define assembly references per solution configuration (‘Debug’ or ‘Release’).
Background
There are some ways to define assembly references which change if the solution configuration changes, but they are not sufficient for larger projects. The following features of Visual Studio 2005 / 2008 are fine for small projects:
- Set a Project reference from one project to another. The projects must be all in one solution. This is not always possible in projects where a lot of developers are working on multiple projects lying in different solutions.
- Set a reference to an assembly lying in the output path of the project. Visual Studio 2005 searches for assembly references first in the output path of the project. A way to define assembly references per solution configuration is to put all assemblies in a common output directory (MSDN Article ). This is inflexible.
The Lexware Assembly Reference Tool fills this gap, by providing a
new tool window in Visual Studio 2005 / 2008, which allows you to
change ‘hard-coded’ assembly reference paths to flexible reference
paths which change depending on the solution configuration. The tool
detects ‘Debug’ or ‘Release’ in the assembly reference path and marks
the assembly in red to show you the potential problem you have, when
you build the project in another configuration. You only need to press
a button and all these paths will be converted to paths which depend on
the configuration of the project.
Additionally the tool provides the following features:
- Change the ‘Copy Local’ property
- Manipulate the ‘Special Version’ property
- Edit the assembly reference path (‘HintPath’)
- Convert a project reference into an assembly references
- Delete an assembly reference
After installing and starting the Add-In you can open the assembly reference tool via the Visual Studio 2005 / 2008 tools menu.
How it works
The general idea behind it
The tool allows flexible assembly reference paths by replacing
“\Debug\” or “\Release\” in the reference path against
“\$Configuration\”, which is a placeholder for the solution
configuration in Visual Studio 2005 / 2008. Visual Basic and CSharp
projects are able to replace the placeholder back to “\Debug\” or
“\Relase\” when trying to resolve an assembly path.
Since the
Visual Studio 2005 / 2008 object model doesn’t allow any change to a
reference path, the tool changes the path in the underlying project
file. It manipulates the tag , the path to the assembly, which is referenced.
When the tool saves the project file, Visual Studio notices that change and asks you to reload the project.
For
some features the tool holds a reference to the internal Visual Studio
representation of an assembly reference (VSLangProj80.Reference3),
which allows a manipulation of properties like ‘CopyLocal’,
‘SpecificVersion’ or deleting a reference. Changes to these properties
are directly reflected by the original property window of the assembly
reference in Visual Studio.
The Tool solution itself
The solution contains a CSharp and a setup project. The setup project was created with the Setup Project template. The CSharp project is originally created with a Visual Studio Add-In project template of Visual Studio 2005.
Visual Studio automatically creates a ‘Tool’ menu item for the add-in, if you choose so in the project wizard. If you select ‘I would like my Add-In to load, …’ Visual Studio loads your Add-In directly when it starts.
In the new project Visual Studio creates two files with the extension ‘AddIn’. One is lying in the project folder (e.g. ‘Lexware.Tools.AssemblyReferences.AddIn’) and this is used when the Add-In is deployed. The other one (e.g. ‘Lexware.Tools.AssemblyReferences - For Testing.AddIn’) is placed in the Visual Studio Add-In folder. This is the one which is used while debugging the Add-In. The Visual Studio Add-In folder is contained in your documents folder. For Windows Vista it should be found here: C:\Users\’Your User Name’\Documents\Visual Studio 2005\Addins. An Add-In file contains a full description of the Add-In. It provides a friendly name, the load behavior and other information, necessary for Visual Studio to display the Add-In in the ‘Add-in Manager’.
The Add-In
The Add-In project contains the file ‘connect.cs’, which contains the code connecting to Visual Studio. The class ‘Connect’ is called, when the Add-In starts. In fact it is defined in the ‘FullClassName’ tag of the ‘.Addin’ file described below.
The class Connect
The class Connect
implements the Visual Studio interface IDTExtensibility2
, which defines the Method OnConnection
.
This method is called, when Visual Studio loads the Add-In into its
memory. This is the place where you can add menu items and in this case
create a tool window.

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; CreateToolWindow(); if (connectMode == ext_ConnectMode.ext_cm_UISetup) { object [] contextGUIDS = new object [] {}; Commands2 commands = (Commands2)_applicationObject.Commands; string toolsMenuName; try { // If you would like to move the command to a different menu, change the // word "Tools" to the English version of the menu. This code will take // the culture, append on the name of the menu then add the command to // that menu. You can find a list of all the top-level menus in the file // CommandBar.resx. ResourceManager resourceManager = new ResourceManager( " Lexware.Tools.AssemblyReferences.CommandBar" , Assembly.GetExecutingAssembly()); CultureInfo cultureInfo = new CultureInfo(_applicationObject.LocaleID); string resourceName = String .Concat(cultureInfo.TwoLetterISOLanguageName, LocalResources.ToolbarName); toolsMenuName = resourceManager.GetString(resourceName); } catch { // We tried to find a localized version of the word Tools, but one was // not found. // Default to the en-US word, which may work for the current culture. toolsMenuName = LocalResources.ToolbarName; } // Place the command on the tools menu. // Find the MenuBar command bar, which is the top-level command bar holding // all the main menu items: Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ( (CommandBars)_applicationObject.CommandBars)[" MenuBar" ]; // Find the Tools command bar on the MenuBar command bar: CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName]; CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl; // This try/catch block can be duplicated if you wish to add multiple commands // to be handled by your Add-in, // just make sure you also update the QueryStatus/Exec method to include // the new command names. try { // Add a command to the Commands collection: Command command = commands.AddNamedCommand2(_addInInstance, " AssemblyReferences" , " Assembly Reference Tool" , " Checks and fixes assembly references. Uses placeholder for debug and release directory." , true , 0 , ref contextGUIDS, (int )vsCommandStatus.vsCommandStatusSupported + (int )vsCommandStatus.vsCommandStatusEnabled, (int )vsCommandStyle.vsCommandStyleText, vsCommandControlType.vsCommandControlTypeButton); // Add a control for the command to the tools menu: if ((command != null ) && (toolsPopup != null )) { command.AddControl(toolsPopup.CommandBar, 1 ); } } catch (ArgumentException) { // If we are here, then the exception is probably because a // command with that name // already exists. If so there is no need to recreate the command and we can // safely ignore the exception. } } }
When the user clicks your menu item, the method Exec
in the same class will be called. You can filter the commandName
, to know whether the called menu item was yours.

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) { handled = false ; if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) { if (commandName == " Lexware.Tools.AssemblyReferences.Connect.AssemblyReferences" ) { // Open Toolwindow CreateToolWindow(); handled = true ; return ; } } }
The tool window, which contains all the important code in this Add-In, is a UserControl. To create it, you can call CreateToolWindow2
. This method creates a new Visual Studio tool window and hosts a user control in it.

private void CreateToolWindow() { if (_toolWindow != null ) { _toolWindow.Activate(); } else { // This guid must be unique for each different tool window, // but you may use the same guid for the same tool window. // This guid can be used for indexing the windows collection, // for example: applicationObject.Windows.Item(guidstr) Windows2 windows2 = (Windows2)_applicationObject.Windows; Assembly asm = Assembly.GetExecutingAssembly(); object customControl = null ; string className = " Lexware.Tools.AssemblyReferences.ToolWindowControl" ; string caption = " Assembly References" ; _toolWindow = windows2.CreateToolWindow2(_addInInstance, asm.Location, className, caption, _toolWindowGuid, ref customControl); // Set the picture displayed when the window is tab docked (this causes // problems in Visual Studio 2008) try { _toolWindow.SetTabPicture(LocalResources.LexwareBmp.GetHbitmap()); } catch { } // When using the hosting control, you must set visible to true before calling // HostUserControl, otherwise the UserControl cannot be hosted properly. _toolWindow.Visible = true ; if (customControl != null ) { _toolWindowControl = (ToolWindowControl)customControl; _toolWindowControl.ApplicationObject = _applicationObject; _toolWindowControl.ParentToolWindow = _toolWindow; } } }
The ToolWindow
The tool window registers some events of the Visual Studio solution, document and the command object, so that changes in the solution will be noticed by the Add-In.

private void RegisterEvents() { if (_solutionEvents != null ) { UnregisterEvents(); } _solutionEvents = _applicationObject.Events.SolutionEvents; // register new events _solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler( _solutionEvents_Opened); _solutionEvents.ProjectAdded += new _dispSolutionEvents_ProjectAddedEventHandler( _solutionEvents_ProjectAdded); _solutionEvents.ProjectRemoved += new _dispSolutionEvents_ProjectRemovedEventHandler( _solutionEvents_ProjectRemoved); _solutionEvents.ProjectRenamed += new _dispSolutionEvents_ProjectRenamedEventHandler( _solutionEvents_ProjectRenamed); _solutionEvents.AfterClosing += new _dispSolutionEvents_AfterClosingEventHandler( _solutionEvents_AfterClosing); _documentEvents.DocumentSaved += new _dispDocumentEvents_DocumentSavedEventHandler( _documentEvents_DocumentSaved); _commandEvents.AfterExecute += new _dispCommandEvents_AfterExecuteEventHandler( _commandEvents_AfterExecute); } private void _commandEvents_AfterExecute(string Guid, int ID, object CustomIn, object CustomOut) { // Command name: File.SaveSelectedItems // Command GUID/ID: {5EFC7975-14BC-11CF-9B2B-00AA00573819}, 331 // Command name: File.SaveAll // Command GUID/ID: {5EFC7975-14BC-11CF-9B2B-00AA00573819}, 224 // Command name: File.SaveSelectedItemsAs // Command GUID/ID: {5EFC7975-14BC-11CF-9B2B-00AA00573819}, 226 // Command name: Build.SolutionConfigurations // Command GUID/ID: {5EFC7975-14BC-11CF-9B2B-00AA00573819}, 684 // Command name: Project.Addreference // Command GUID/ID: {1496A755-94DE-11D0-8C3F-00C04FC2AAE2}, 1113 if (((Guid == " {5EFC7975-14BC-11CF-9B2B-00AA00573819}" ) && (ID == 331 )) || ((Guid == " {5EFC7975-14BC-11CF-9B2B-00AA00573819}" ) && (ID == 224 )) || ((Guid == " {5EFC7975-14BC-11CF-9B2B-00AA00573819}" ) && (ID == 226 ))) { ReadAllReferences(); } else if ((Guid == " {1496A755-94DE-11D0-8C3F-00C04FC2AAE2}" ) && (ID == 1113 )) { ParentToolWindow.Activate(); } }
When the solution changes, the Add-In iterates the projects
contained in the solution and reads in the references of each project.
It adds each reference to the list view and puts an instance of the
class AssemblyReferenceInformation
at the tag of the ListViewItem
. This instance contains information about the project file (.csproj or .vbproj) and the assembly reference (VSLangProj80.Reference3
), which will be used when manipulating the reference.

private void ReadAllReferences() { ClearHintLists(); if ((_applicationObject != null ) && (_applicationObject.Solution != null )) { // Walk through the projects of the solution and search for assembly references foreach (Project currentProject in _applicationObject.Solution.Projects) { ReadProjectReferences(currentProject); } } } private void ReadProjectReferences(Project currentProject) { try { if (currentProject != null ) { VSProject2 visualStudioProject = currentProject.Object as VSProject2; // The current project can be a 'real' project, but it can also be a // folder (see else if) if (visualStudioProject != null ) { string projectFullName = currentProject.FullName; if (!string.IsNullOrEmpty(projectFullName)) { FileInfo projectFileInfo = new FileInfo(projectFullName); // If it is a csproj or a vbproj, add it the the list view if (projectFileInfo.Exists && ((projectFileInfo.Extension == _csProjectFileExtension) || (projectFileInfo.Extension == _vbProjectFileExtension))) { // Add a group for this project ListViewGroup projectGroup = GetProjectGroup(currentProject); AddAssemblyHintsToListView(currentProject, projectFullName, projectGroup, visualStudioProject); } } } else if ((currentProject.ProjectItems != null ) && ( currentProject.ProjectItems.Count > 0 )) { // Project Item Type GUID // Physical File {6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C} // Physical Folder {6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C} // Virtual Folder {6BB5F8F0-4483-11D3-8BCF-00C04F8EC28C} // Subproject {EA6618E8-6E24-4528-94BE-6889FE16485C} // The projects contains a sub folder -> search for projects in // these folders foreach (ProjectItem currentProjectItem in currentProject.ProjectItems) { if (currentProjectItem.SubProject != null ) { ReadProjectReferences(currentProjectItem.SubProject); } } } } // Enable fixit button, if there is something to fix toolStripButtonFixIt.Enabled = (_needsToBeSaved.Count > 0 ); } catch (Exception ex) { ShowMessage(ex); } }
When the user hits the 'FixIt' button, the tool changes the underlying project file. It save all projects which needs to be saved, due to an incorrect assembly path.

private void SaveDirtyProjects() { try { foreach (KeyValuePair project in _needsToBeSaved) { XmlDocumentHolder documentHolder = project.Value; SaveProject(documentHolder); } } catch (Exception ex) { ShowMessage(ex); } } private void SaveProject(XmlDocumentHolder documentHolder) { string projectName = documentHolder.Project.FullName; if (!documentHolder.Project.Saved) { MessageBox.Show(" Please save all projects before you fix the problems." ); return ; } // Check out the project if ((_sourceControl != null ) && (_sourceControl.IsItemUnderSCC(projectName)) && (!_sourceControl.IsItemCheckedOut(projectName))) { _sourceControl.CheckOutItem(projectName); } using (XmlTextWriter writer = new XmlTextWriter(documentHolder.ProjectFileName, Encoding.UTF8)) { writer.Formatting = Formatting.Indented; documentHolder.XmlDocument.Save(writer); } }
Visual Studio notices that the tool changed the project file and asks you to reload the project.
The setup project
The setup project deploys the Add-In to the AddIns folders of Visual Studio 2005 and Visual Studio 2008.
It
automatically detects newer and older version, older versions will be
removed before installing a new version. To create a new setup version
for the Add-In, only change the version of the setup. Visual Studio
will generate a new ProductCode for you, but it will not touch the
UpgradeCode. With the combination of codes, Windows Installer is able
to detect and update older or newer versions of the Add-In.
Requirements to build the solution
To build the solution, you need Visual Studio 2008. The Add-In is tested on Visual Studio 2005 and 2008 Team Developer and Team Suite.
History
no changes
<!-- Main Page Contents End -->License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
About the Author
Thomas Dörr
Member |
Thomas has been programming in C, C++, VB and C# since many years.
He works as a Senior Software Architect for Lexware GmbH & Co.KG in
Freiburg, Germany.
|
Other popular Macros and Add-ins articles:
-
Undocumented Visual C++
Spelunking in the Badlands of MSDEV
-
CodePlotter 1.6 - Add and edit diagrams in your code with this 'Visio-like' tool
A Visual Studio addin for creating and editing ASCII diagrams in source files
-
Versioning Controlled Build
A Visual Studio add-in and command-line utility that automates versioning of .NET and VC++ projects
-
Useful enhancements for Visual Studio .NET
Several tools packed into one addin for Visual Studio .NET
-
WTL Helper
Add-in for Microsoft VC++.NET 2003 that helps to insert message handlers for WTL.
发表评论
-
WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)
2010-01-13 16:40 2387Shader Effect 中文名称为“渲染特效”或“滤镜” ... -
Silverlight Image Source URI : 一个反斜杠引发的血案
2010-01-12 13:10 3602Silverlight Image Source U ... -
SilverLight跨域访问及其常用的几种解决方法
2010-01-06 16:59 5443SilverLight 出于对安全性的考虑默认情况下对UR ... -
有关silverlight中调用webservice的问题!!
2010-01-06 15:07 3363System.InvalidOperationExceptio ... -
Server.UrlEncode、HttpUtility.UrlDecode不同编码
2010-01-06 12:39 3288Server.UrlEncode、HttpUtility.U ... -
LINQ to XML一些基本查询
2010-01-06 12:34 2052/**/ /// /根据元素的名称进行筛选(有命名空 ... -
使用LINQ to XML来查询XML
2010-01-06 12:16 2765使用LINQ to XML来查询XML ... -
给弟弟起步学习软件开发(.Net 方向)的指导,博友们帮助看看,提些意见给他。
2010-01-06 11:15 985在我学习的时候走了至少3年的弯路,那个时候没有人告诉我该如 ... -
LINQ to XML 用 LINQ 查询 XML
2010-01-06 11:15 1522LINQ to XML 用 LINQ 查询 XML ... -
一个实例掌握linq to XML增查删改
2010-01-06 11:10 2258最近忽然想把过去写的I ... -
使用XML LINQ查询和转换XML
2010-01-06 10:37 1505本章包括 n XML LI ... -
XML LINQ简介
2010-01-06 10:32 1585本章包括 n XML LINQ ... -
.Net 中string与byte[]相互转换
2010-01-05 16:43 2447public static byt ... -
正则表达式收集(持久更新)
2010-01-04 15:56 1135正则表达式收集( ... -
网上搜集的webbrower的资料,很有借鉴价值
2010-01-04 15:54 1908http://hi.baidu.com/lovemoe/ ... -
Visual Studio的 诡异bug(mscorlib无法引用)
2010-01-04 09:27 2531这个需要手动修改项目的配置文件 添加 <Re ... -
[C#实战]Google Map开发实战参考
2010-01-03 16:48 5784[C# 实战] ... -
复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
2010-01-02 23:33 2582有这样一道 .Net/C# 面试题:请以事件的概念实现 ... -
ADO.NET Entity Framework简介
2009-12-21 18:46 2710下一代的ADO.NET的目标是要解决关系数据模型和实际应用程序 ...
相关推荐
这些类的特殊之处在于您具有对Lexware数据库的完全访问权限(包括写入),并且-与已知的ODBC解决方案相反-不必打开Lexware! 执照 该库受。 NuGet软件包 描述 徽章 基础库 Lexware基本组件 NHibernate组件 全球...
网络上的 Lexware 信息和工具 有关 Web 文档和在线工具,请参阅 。 在这个存储库中: ├── lw2xml : Validator and dictionary formatter ├── analysis : Xquery extraction from xhtml ├── pages_md : ...
"cteward-sa-meckerfritze"项目似乎是一个针对"Mtefritze"(可能是 Lexware 公司的一个产品)的自动化脚本集,由用户"cteward"创建。"Lexware"是一家知名的德国软件公司,其产品主要面向小型和中型企业,提供财务、...
这是在簿记框架内完成的,为此还需要一个簿记程序——一个接口被内置到簿记程序中(例如“Lexware Buchhalter”)。 捐款可以通过会计部门作为俱乐部捐款(非物质领域)或作为参与者费用(需缴纳销售税!)在发票上...
基于分时电价机制的家庭能量管理策略优化研究:考虑空调、电动汽车及可平移负荷的精细控制模型,基于分时电价机制的家庭能量管理策略优化研究:集成空调、电动汽车与可平移负荷管理模型,MATLAB代码:基于分时电价条件下家庭能量管理策略研究 关键词:家庭能量管理模型 分时电价 空调 电动汽车 可平移负荷 参考文档:《基于分时电价和蓄电池实时控制策略的家庭能量系统优化》参考部分模型 《计及舒适度的家庭能量管理系统优化控制策略》参考部分模型 仿真平台:MATLAB+CPLEX 平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码,非常精品 主要内容:代码主要做的是家庭能量管理模型,首先构建了电动汽车、空调、热水器以及烘干机等若干家庭用户用电设备的能量管理模型,其次,考虑在分时电价、动态电价以及动态电价下休息日和工作日家庭用户的最优能量管理策略,依次通过CPLEX完成不同场景下居民用电策略的优化,该代码适合新手学习以及在此基础上进行拓展 ,核心关键词: 家庭能量管理模型; 分时电价; 电动汽车; 空调; 可平移负荷; 优化控制策略; 仿真平台(MATLAB+CPLEX); 深度创新性。,
Winsoft PDFium Component Suite v7.4 for Delphi & CB 5-12 Athens Full Source.7z
基于Matlab的草原生态管理策略研究:数学建模及E前四问问题分析思路,基于Matlab的草原放牧策略研究:数学建模与问题解决的前四问思路,基于Matlab的草原放牧的策略研究数学建模E前四问思路 ,基于Matlab的草原放牧策略研究; 数学建模; E前四问思路; 策略优化; 模型验证; 数据模拟。,Matlab草原放牧策略研究:数学建模E及前四问解析
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
主要功能 信息搜索:可快速搜索局域网中的计算机,获取计算机名、IP 地址、MAC 地址、所在工作组、用户等详细信息,还能搜索共享资源和共享文件,便于用户快速定位和访问所需资源。 网络嗅探:能够捕获 TCP、UDP、ICMP、ARP 等各种数据包,可嗅探局域网上的 QQ 号,查看各主机流量,还能从流过网卡的数据中嗅探出音乐、视频、图片等文件,帮助用户了解网络数据传输情况。 聊天与共享:具备局域网聊天和文件共享功能,无需服务器支持。用户可进行群聊或私聊,还能指定条件搜索其他用户共享的文件,方便局域网内的信息交流与资源共享。 计算机管理:可以向开启信使服务的计算机发送短消息,对于有相应权限的计算机,还能进行远程关闭或重启操作,方便网络管理员进行集中管理。 文件复制:支持复制网上邻居上的共享文件、LanSee 用户共享的文件以及通过网络嗅探功能嗅探出的文件,并且支持断点传输,提高文件复制的效率和稳定性。 端口与连接查看:可列出进程打开的所有网络端口以及连接情况,能快速扫描 TCP 端口,查看适配器信息,还能进行 Ping、Traceroute 等操作,帮助用户了解网络连接状态和诊断网络问题。
迅雷软件下载原理介绍.md
## 01、数据简介 出口退税率是针对出口产品在国内已缴纳的税款,在货物报关出口后退还给出口企业时,按照一定比例计算的退税金额与计税价格之间的比率。 出口退税率是出口退税制度中的一个重要参数,它体现了国家对出口企业的税收优惠政策,有助于降低企业的出口成本,提升其在国际市场上的竞争力。同时,国家也会根据经济形势和国际贸易的变化,适时调整出口退税率,以更好地服务于国家的经济发展战略。 数据名称:2024年HS编码出口退税率数据 数据年份:2004-2024年 ## 02、相关数据 CODE、ST_DATE、END_DATE、ZHCMCODE、NAME、DWCODE、UNIT、BCFLAG、STDFLAG、DWFLAG、SZ、ZSSL_SET、CLDE、CJDL、TSL、SPLB、TSFLAG、NOTE。 ## 03、数据截图
风机变桨控制FAST与MATLAB SIMULINK联合仿真模型:非线性风力发电机的PID独立与统一变桨控制策略对比研究,风机变桨控制FAST与MATLAB联合仿真研究:非线性风力发电机的PID独立与统一变桨控制在Trubsim 3D湍流风环境下的对比分析,风机变桨控制FAST与MATLAB SIMULINK联合仿真模型非线性风力发电机的 PID独立变桨和统一变桨控制下仿真模型,对于5WM非线性风机风机进行控制 链接simulink的scope出转速对比,桨距角对比,叶片挥舞力矩,轮毂处偏航力矩,俯仰力矩等载荷数据对比图,在trubsim生成的3D湍流风环境下模拟 统一变桨反馈信号是转速,独立变桨反馈是叶根载荷 提供包含openfast与matlab simulink联合仿真的建模 可以提供参考文献+模型+大佬交流群 ,核心关键词:FAST; MATLAB SIMULINK; 联合仿真模型; 非线性风力发电机; PID控制; 独立变桨; 统一变桨; 转速对比; 桨距角对比; 叶片挥舞力矩; 轮毂偏航力矩; 俯仰力矩; 3D湍流风环境; 建模; 参考文献; 模型交流群。,基于OpenF
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
java8版本的压缩包(windows)
NMPC非线性模型预测控制:从原理到代码实践的全面解析,包含四项案例研究:自动泊车轨迹优化、倒立摆上翻控制、车辆运动学轨迹跟踪及四旋翼无人机轨迹跟踪,非线性模型预测控制在四个案例中的实践与应用:从原理到代码实操指南,nmpc非线性模型预测控制从原理到代码实践 包含4个案例 1 自动泊车轨迹优化 2 倒立摆上翻控制 3 车辆运动学轨迹跟踪 4 四旋翼无人机轨迹跟踪 ,nmpc;非线性模型预测控制;原理;代码实践;案例;自动泊车轨迹优化;倒立摆上翻控制;车辆运动学轨迹跟踪;四旋翼无人机轨迹跟踪,NMPC非线性模型预测控制:原理与代码实践,四案例详解(含自动泊车、倒立摆、车辆轨迹跟踪及四旋翼无人机控制)
Gnostice PDFToolkit v.5.0.0.860 for Delphi 11.7z
快速打开图纸:具有闪电般的启动速度,能快速打开各种版本的 DWG 图纸,让用户迅速开始查看和使用图纸。 显示完整准确:全面完整地显示布局、图案填充等内容,可自动匹配所有字体,有效解决中文乱码问题,能完美显示钢筋符号。 支持天正系列:是业内支持天正建筑、天正给排水、天正暖通、天正电气的 CAD 看图产品,方便建筑、给排水等相关专业人员查看和使用天正图纸。 便捷传图功能:内置 WiFi 直连电脑、云盘功能,方便用户在不同设备之间轻松传图,实现图纸的快速传输和共享。 多种操作功能:可添加各种注释,如线条、文字、图片等,还能精确扣点,方便用户对图纸进行标记和说明;具有所见即所得的打印方式,可自由设置打印范围;支持全屏看图,让用户获得更好的查看体验。 测量统计功能:能准确测量长度、半径、角度、弧长、坐标、多边形面积等,还可自动统计测量的长度和面积,可按颜色统计或手动统计,结果能导出表格。 高效协作功能:支持团队协同,用户可以在移动中处理工作,与合作伙伴随时沟通;可以捕获现场照片和录制语音消息并作为注释附加到图纸上,还能导入 / 导出图纸注释。
单向手性光学腔的研究与应用 - Comsol的光学物理分析与实现,“Comsol模拟下的单向手性光学腔特性探究”,Comsol单向手性光学腔。 ,核心关键词:Comsol; 单向手性; 光学腔; 模拟。,单向手性光学腔的Comsol模拟研究
目录: CDlinux_CE-0.9.5 CDlinux_CE-0.9.6.1 CDlinux_CE-0.9.7.1 CDlinux_mini-0.9.5 CDlinux_mini-0.9.6.1 CDlinux_mini-0.9.7.1 CDlinux-0.9.5.1 CDlinux-0.9.6.1 CDlinux-0.9.6 CDlinux-0.9.7.1 CDlinux-0.9.7 ........... 网盘文件永久链接