تو مطلب مربوط به لینک اول یعنی درست کردن فایل های راهنما ی CHM ، دانلود SDK مربوط به
Visual Studio 2008 SDK Version 1.0 حدودا 95 مگابایته. ولی برای 2010 حدودا 11 مگابایت. این دوتا با هم تفاوت دارند؟
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Microsoft.SqlServer.TransactSql.ScriptDom; namespace DbCop { // Microsoft® SQL Server® 2012 Transact-SQL ScriptDom // SQL Server 2012 managed parser, Supports SQL Server 2005+ // SQLDom.msi (redist x86/x64) // http://www.microsoft.com/en-us/download/details.aspx?id=29065 // X86: http://go.microsoft.com/fwlink/?LinkID=239634&clcid=0x409 // X64: http://go.microsoft.com/fwlink/?LinkID=239635&clcid=0x409 // Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.TransactSql.ScriptDom.dll class Program { static void Main() { const string tSql = @" -- select * in PROCEDURE CREATE PROCEDURE dbo.SelectStarTest AS SELECT * FROM dbo.tbl1 go -- select * in PROCEDURE with TableVar Create PRocedure SelectAll AS Declare @X table(Id integer) Select * from @x go -- select * in PROCEDURE with ctex CREATE PROCEDURE dbo.SelectAllCte AS WITH ctex AS ( SELECT * FROM sys.objects ) SELECT * FROM ctex go -- normal select * select * from tbl1; select * from dbo.tbl2; "; IList<ParseError> errors; TSqlScript sqlFragment; using (var reader = new StringReader(tSql)) { var parser = new TSql110Parser(initialQuotedIdentifiers: true); sqlFragment = (TSqlScript)parser.Parse(reader, out errors); } if (errors != null && errors.Any()) { var sb = new StringBuilder(); foreach (var error in errors) sb.AppendLine(error.Message); throw new InvalidOperationException(sb.ToString()); } var i = 0; foreach (var batch in sqlFragment.Batches) { Console.WriteLine("Batch: {0}, Statement(s): {1}", ++i, batch.Statements.Count); foreach (var statement in batch.Statements) { processStatement(statement); } Console.WriteLine(); } Console.WriteLine("\nPress a key..."); Console.Read(); } private static void processStatement(TSqlStatement statement) { var createProcedureStatement = statement as CreateProcedureStatement; if (createProcedureStatement != null) { var statementList = createProcedureStatement.StatementList; foreach (var procedureStatement in statementList.Statements) { processStatement(procedureStatement); } } var selectStatement = statement as SelectStatement; if (selectStatement != null) { var query = selectStatement.QueryExpression; var selectElements = ((QuerySpecification)query).SelectElements; foreach (var selectElement in selectElements) { var expression = selectElement as SelectStarExpression; if (expression == null) continue; Console.WriteLine( "`Select *` detected @StartOffset:{0}, Line:{1}, T-SQL: {2}", expression.StartOffset, expression.StartLine, statementToString(selectStatement)); } } } private static string statementToString(TSqlFragment selectStatement) { var text = new StringBuilder(); for (var i = selectStatement.FirstTokenIndex; i <= selectStatement.LastTokenIndex; i++) { text.Append(selectStatement.ScriptTokenStream[i].Text); } return text.ToString(); } } }
Batch: 1, Statement(s): 1 `Select *` detected @StartOffset:140, Line:5, T-SQL: SELECT * FROM dbo.tbl1 Batch: 2, Statement(s): 1 `Select *` detected @StartOffset:368, Line:12, T-SQL: Select * from @x Batch: 3, Statement(s): 1 `Select *` detected @StartOffset:659, Line:22, T-SQL: WITH ctex AS ( SELECT * FROM sys.objects ) SELECT * FROM ctex Batch: 4, Statement(s): 2 `Select *` detected @StartOffset:753, Line:26, T-SQL: select * from tbl1; `Select *` detected @StartOffset:791, Line:27, T-SQL: select * from dbo.tbl2;
در محل کار برای مدیریت سورس پروژههایی که در حال کار بر روی آنها هستیم از TFS استفاده میکنیم. به دلیل اینکه عمدهی زمان کار ما بر روی پروژهها محدود به وقتی هست که در شرکت حضور داریم، خیلی کم پیش آمده که نیاز به دسترسی به سرور خارج از شبکهی داخلی به وجود بیاید.
اما در چند روز گذشته این نیاز به وجود آمده. خب اولین چیزی که به ذهن میرسد این هست که نیاز به یک Static IP و تعریف یک رکورد NAT در بخش تنظیمات مودم اینترنتی شبکهی داخلی شرکت هست.
تا اینجا درست. اما Static IP بر روی سرویس ADLS شرکت تعریف نشده است و در هر بار اتصال به اینترنت IP جدید اما Valid به مودم تخصیص داده میشود. در یک شبکهی Local میتوانیم از طریق نام یک کامپیوتر به آن متصل بشویم. اما زمانی که خارج از آن شبکه قرار داشته باشیم انجام این کار مقدور نیست.
زمانی که در Visual Studio از منوی Team>Connect نام کامپیوتر مقصد - که همان سرور سورس کنترل باشد - را وارد میکنیم و از طریق کانکشنی که تعریف میکنیم به سورس کنترل متصل میشویم، این کانکشن بر اساس آدرس سرور Unique خواهد بود.
چنانچه خارج از شبکهی Local بخواهیم از طریق Valid IP به همان سرور متصل بشویم، به دلیل اینکه Connection String جدید که بر اساس Valid IP میباشد با Connection String قبلی که بر اساس نام سرور میباشد متفاوت است، به همین دلیل ویژوال استودیو دو تعریف مجزا از این دو کانکشن خواهد داشت. بنابراین نمیتوانیم پروژهی مورد نظر خودمان را با کانکشن جدید، طبق روال گذشته مدیریت نماییم و عملیات Check-In و Check-Out و... را انجام دهیم.
برای رفع این مشکل میتوانیم از طریق نگاشت نام سرور محلی به Valid IP اقدام نماییم. برای این کار، از مسیر C:\Windows\System32\drivers\etc فایل Hosts را به وسیلهی یک ویرایشگر متنی باز میکنیم و در انتهای خطوط موجود در فایل عبارت ذیل را وارد مینماییم.
VlidIP {TAB} Local_Server_Name
یعنی ابتدا آدرس آی پی سپس یک بار کلید Tab را فشار میدهیم و سپس نام کامپیوتر سرور محلی را درج میکنیم.
بعد از این کار، در هر کجایی که نام سرور محلی را وارد نماییم، توسط Rule تعریف شده در فایل مذکور، نام سرور به آی پی مورد نظر نگاشت میشود._ لازم به ذکر نیست که باید بر روی مودم اینترنتی شبکهی داخلی مورد نظر باید توسط تعریف NAT درخواست هایی که روی پورت خاصی از مودم وارد میشوند را به همان شمارهی پورت بر روی رایانهی سرور محلی منتقل کرد.
در این قسمت میتوانید هر کدام از موارد را که نیاز دارید، نصب کنید. هر کدام از عنوانها در آینده آموزش داده خواهند شد و پیشنهاد میشود آنها را نصب کنید؛ در غیر این صورت فقط گزینهی اول کافی میباشد.
در صورت کلیک بر روی Options، با صفحهی زیر روبرو میشوید که در آن با انتخاب گزینهی Administrative، میتوانید تنظیمات بیشتری را در زمان نصب، انجام دهید و همچنین با انتخاب All users ، نرم افزار برای تمام کاربران سیستم در دسترس خواهد بود.
بعد از اتمام نصب، فایلهای نرم افزار در آدرس زیر در دسترس میباشند:
%LOCALAPPDATA%\JetBrains\Installations
اکنون اگر Visual studio را باز کنید، Resharper به قسمت Extensionsها اضافه شدهاست که در ادامهی آموزش به بررسی آن میپردازیم.
زبانهای پشتیبانی شده
ریشارپر از زبان های C# , VB.NET , TypeScript , JavaScript , C++ , CSS پشتیبانی میکند.
افزایش سرعت Reshaper
یکی از مشکلاتی که بیشتر افراد بعد از نصب این افزونه دارند، مخصوصا اگر سیستم آنها خیلی قوی نباشد، کند شدن Visual Studio میباشد. برای سریعتر کردن این افزونه راه هایی موجود میباشد که به آنها میپردازیم.
ReSharper | Options | Environment | Performance Guide
ReSharper | Options | Code Inspection | Settings
Environment | General
Automatically adjust visual experience based on client performance Enable rich client visual experience
Use hardware graphics acceleration if available
Environment | AutoRecover
Save AutoRecover information
Text Editor | General
Track changes
Text Editor | All Languages | Scroll Bars
Show annotations over vertical scroll bar
Text Editor | All Languages | CodeLens
Text Editor | [Language] | Formatting
auto-formatting
Environment | Products & Features
Environment | IntelliSense
Completion Appearance ReSharper's IntelliSense for specific languages
Use Tempdb Go CREATE TABLE [Sample] (value int); INSERT INTO [Sample] VALUES (1),(2),(3),(4),(5),(6); Go --simple CASE Expression SELECT value, CASE Value WHEN 1 THEN 'Very Bad' WHEN 2 THEN 'Bad' WHEN 3 THEN 'Not Bad' WHEN 4 THEN 'Good' WHEN 5 THEN 'Very Good' WHEN 6 THEN 'Excellent' ELSE NULL END AS [Result] FROM [Sample]; --CHOOSE Scalar Function SELECT value, CHOOSE(value,'Very Bad','Bad','Not Bad','Good','Very Good','Excellent') FROM [Sample]; --nested IIF Scalr Function SELECT value, IIF(value = 1, 'Very Bad', IIF(value = 2, 'Bad', IIF(value = 3, 'Not Bad', IIF(value = 4, 'Good', IIF(value = 5, 'Very Good', 'Excellent' ) ) ) ) ) FROM [Sample];