The Xamarin platform consists of a number of elements that allow you to develop applications for iOS and Android:
C# language– Allows you to use a familiar syntax and sophisticated features like Generics, LINQ and the Parallel Task Library.
Mono .NET framework– Provides a cross-platform implementation of the extensive features in Microsoft’s .NET framework.
Compiler– Depending on the platform, produces a native app (eg.iOS) or an integrated .NET application and runtime (eg.Android).The compiler also performs many optimizations for mobile deployment such as linking away un-used code.
IDE tools– The Visual Studio on Mac and Windows allows you to create, build, and deploy Xamarin projects.
In addition, because the underlying language is C# with the .NET framework, projects can be structured to share code that can also be deployed to Windows Phone.
Under the Hood
Although Xamarin allows you to write apps in C#, and share the same code across multiple platforms, the actual implementation on each system is very different.
Compilation
The C# source makes its way into a native app in very different ways on each platform:
iOS– C# is ahead-of-time (AOT) compiled to ARM assembly language.The .NET framework is included, with unused classes being stripped out during linking to reduce the application size.Apple does not allow runtime code generation on iOS, so some language features are not available (seeXamarin.iOS Limitations).
Android– C# is compiled to IL and packaged with MonoVM + JIT’ing.Unused classes in the framework are stripped out during linking.The application runs side-by-side with Java/ART (Android runtime) and interacts with the native types via JNI (seeXamarin.Android Limitations).
Windows– C# is compiled to IL and executed by the built-in runtime, and does not require Xamarin tools.Designing Windows applications following Xamarin’s guidance makes it simpler to re-use the code on iOS and Android.Note that the Universal Windows Platform also has a.NET Nativeoption which behaves similarly to Xamarin.iOS' AOT compilation.
The linker documentation forXamarin.iOSandXamarin.Androidprovides more information about this part of the compilation process.
Runtime 'compilation' – generating code dynamically withSystem.Reflection.Emit– should be avoided.
Apple’s kernel prevents dynamic code generation on iOS devices, therefore emitting code on-the-fly will not work in Xamarin.iOS.Likewise, the Dynamic Language Runtime features cannot be used with Xamarin tools.
Some reflection features do work (eg.MonoTouch.Dialog uses it for the Reflection API), just not code generation.
Platform SDK Access
Xamarin makes the features provided by the platform-specific SDK easily accessible with familiar C# syntax:
iOS– Xamarin.iOS exposes Apple’s CocoaTouch SDK frameworks as namespaces that you can reference from C#.For example the UIKit framework that contains all the user interface controls can be included with a simpleusing UIKit;statement.
Android– Xamarin.Android exposes Google’s Android SDK as namespaces, so you can reference any part of the supported SDK with a using statement, such asusing Android.Views;to access the user interface controls.
Windows– Windows apps are built using Visual Studio on Windows.Project types include Windows Forms, WPF, WinRT, and the Universal Windows Platform (UWP).
Seamless Integration for Developers
The beauty of Xamarin is that despite the differences under the hood, Xamarin.iOS and Xamarin.Android (coupled with Microsoft’s Windows SDKs) offer a seamless experience for writing C# code that can be re-used across all three platforms.
Business logic, database usage, network access, and other common functions can be written once and re-used on each platform, providing a foundation for platform-specific user interfaces that look and perform as native applications.
Integrated Development Environment (IDE) Availability
Xamarin development can be done in Visual Studio on either Mac or Windows.The IDE you choose will be determined by the platforms you wish to target.
Because Windows apps can only be developed on Windows, to build for iOS, Android,andWindows requires Visual Studio for Windows.However it's possible to share projects and files between Windows and Mac computers, so iOS and Android apps can be built on a Mac and shared code could later be added to a Windows project.
The development requirements for each platform are discussed in more detail in theRequirementguide.
iOS
Developing iOS applications requires a Mac computer, running macOS.You can also use Visual Studio to write and deploy iOS applications with Xamarin in Visual Studio.However, a Mac is still needed for build and licensing purposes.
Apple’s Xcode IDE must be installed to provide the compiler and simulator for testing.You can test on your own devicesfor free, but to build applications for distribution (eg.the App Store) you must join Apple’s Developer Program ($99 USD per year).Each time you submit or update an application, it must be reviewed and approved by Apple before it is made available for customers to download.
Code is written with the Visual Studio IDE and screen layouts can be built programmatically or edited with Xamarin's iOS Designer in either IDE.
Android application development requires the Java and Android SDKs to be installed.These provide the compiler, emulator and other tools required for building, deployment and testing.Java, Google’s Android SDK and Xamarin’s tools can all be installed and run on Windows and macOS.The following configurations are recommended:
Windows 10 with Visual Studio 2019
macOS Mojave (10.11+) with Visual Studio 2019 for Mac
Xamarin provides a unified installer that will configure your system with the pre-requisite Java, Android and Xamarin tools (including a visual designer for screen layouts).Refer to theXamarin.Android Installation Guidefor detailed instructions.
You can build and test applications on a real device without any license from Google, however to distribute your application through a store (such as Google Play, Amazon or Barnes & Noble) a registration fee may be payable to the operator.Google Play will publish your app instantly, while the other stores have an approval process similar to Apple’s.
Windows
Windows apps (WinForms, WPF, or UWP) are built with Visual Studio.They do not use Xamarin directly.However, C# code can be shared across Windows, iOS and Android.Visit Microsoft’sDev Centerto learn about the tools required for Windows development.
Creating the User Interface (UI)
A key benefit of using Xamarin is that the application user interface uses native controls on each platform, creating apps that are indistinguishable from an application written in Objective-C or Java (for iOS and Android respectively).
When building screens in your app, you can either lay out the controls in code or create complete screens using the design tools available for each platform.
Create Controls Programmatically
Each platform allows user interface controls to be added to a screen using code.This can be very time-consuming as it can be difficult to visualize the finished design when hard-coding pixel coordinates for control positions and sizes.
Programmatically creating controls does have benefits though, particularly on iOS for building views that resize or render differently across the iPhone and iPad screen sizes.
Visual Designer
Each platform has a different method for visually laying out screens:
iOS– Xamarin's iOS Designer facilitates building Views using drag-and-drop functionality and property fields.Collectively these Views make up a Storyboard, and can be accessed in the.Storyboardfile that is included in your project.
Android– Xamarin provides an Android drag-and-drop UI designer for Visual Studio.Android screen layouts are saved as.AXMLfiles when using Xamarin tools.
Windows– Microsoft provides a drag-and-drop UI designer in Visual Studio and Blend.The screen layouts are stored as .XAML files.
These screenshots show the visual screen designers available on each platform:
In all cases the elements that you create visually can be referenced in your code.
User Interface Considerations
A key benefit of using Xamarin to build cross platform applications is that they can take advantage of native UI toolkits to present a familiar interface to the user.The UI will also perform as fast as any other native application.
Some UI metaphors work across multiple platforms (for example, all three platforms use a similar scrolling-list control) but in order for your application to ‘feel’ right the UI should take advantage of platform-specific user interface elements when appropriate.Examples of platform-specific UI metaphors include:
iOS– hierarchical navigation with soft back button, tabs on the bottom of the screen.
Android– hardware/system-software back button, action menu, tabs on the top of the screen.
Windows– Windows apps can run on desktops, tablets (such as Microsoft Surface) and phones.Windows 10 devices may have hardware back button and live tiles, for example.
It is recommended that you read the design guidelines relevant to the platforms you are targeting:
The Xamarin platform allows re-use of existing C# code across all platforms as well as the integration of libraries written natively for each platform.
C# Source and Libraries
Because Xamarin products use C# and the .NET framework, lots of existing source code (both open source and in-house projects) can be re-used in Xamarin.iOS or Xamarin.Android projects.Often the source can simply be added to a Xamarin solution and it will work immediately.If an unsupported .NET framework feature has been used, some tweaks may be required.
Examples of C# source that can be used in Xamarin.iOS or Xamarin.Android include: SQLite-NET, NewtonSoft.JSON and SharpZipLib.
Objective-C Bindings + Binding Projects
Xamarin provides a tool calledbtouchthat helps create bindings that allow Objective-C libraries to be used in Xamarin.iOS projects.Refer to theBinding Objective-C Types documentationfor details on how this is done.
Examples of Objective-C libraries that can be used in Xamarin.iOS include: RedLaser barcode scanning, Google Analytics and PayPal integration.Open-source Xamarin.iOS bindings are available ongithub.
.jar Bindings + Binding Projects
Xamarin supports using existing Java libraries in Xamarin.Android.Refer to theBinding a Java Library documentationfor details on how to use a .JAR file from Xamarin.Android.
Open-source Xamarin.Android bindings are available ongithub.
C via PInvoke
"Platform Invoke" technology (P/Invoke) allows managed code (C#) to call methods in native libraries as well as support for native libraries to call back into managed code.
For example, theSQLite-NETlibrary uses statements like this:
C#복사
[DllImport("sqlite3", EntryPoint = "sqlite3_open", CallingConvention=CallingConvention.Cdecl)] publicstaticextern Result Open (string filename, out IntPtr db);
This binds to the native C-language SQLite implementation in iOS and Android.Developers familiar with an existing C API can construct a set of C# classes to map to the native API and utilize the existing platform code.There is documentation forlinking native librariesin Xamarin.iOS, similar principles apply to Xamarin.Android.
C++ via CppSharp
Miguel explains CXXI (now calledCppSharp) on hisblog.An alternative to binding to a C++ library directly is to create a C wrapper and bind to that via P/Invoke.
Xamarin 플랫폼은 iOS 및 Android 용 응용 프로그램을 개발 하는 데 사용할 수 있는 여러 요소로 구성 됩니다.
language – 친숙 한 구문과 제네릭, LINQ 및 병렬 작업 라이브러리와 같은 고급 기능을 사용할 수 있습니다.C#
Mono .net framework– Microsoft .net framework의 다양 한 기능에 대 한 플랫폼 간 구현을 제공 합니다.
컴파일러– 플랫폼에 따라 네이티브 앱을 생성 합니다 (예:iOS) 또는 통합 된 .NET 응용 프로그램 및 런타임 (예:Android).또한 컴파일러는 사용 되지 않은 코드를 연결 하는 것과 같은 모바일 배포에 대해 많은 최적화를 수행 합니다.
IDE 도구– Mac 및 Windows의 Visual Studio를 사용 하 여 Xamarin 프로젝트를 생성, 빌드 및 배포할 수 있습니다.
또한 기본 언어는 .NET framework를 C# 사용 하기 때문에 Windows Phone에 배포 될 수 있는 코드를 공유 하도록 프로젝트를 구조화 할 수 있습니다.
내부적으로
Xamarin을 사용 하 여에서 C#앱을 작성 하 고 동일한 코드를 여러 플랫폼에서 공유할 수 있지만 각 시스템의 실제 구현은 매우 다릅니다.
컴파일
소스 C# 는 각 플랫폼에서 매우 다양 한 방식으로 네이티브 앱에 사용 됩니다.
iOS– C# ARM 어셈블리 언어로 AOT (사전)로 컴파일됩니다.응용 프로그램 크기를 줄이기 위해 연결 하는 동안 사용 되지 않은 클래스를 제거 하는 .NET framework가 포함 되어 있습니다.Apple은 iOS에서 런타임 코드 생성을 허용 하지 않으므로 일부 언어 기능을 사용할 수 없습니다 (Xamarin.ios 제한 사항참조).
Android– C# IL로 컴파일되고 MonoVM + JIT'ing로 패키지 됩니다.프레임 워크에서 사용 되지 않는 클래스는 연결 중에 제거 됩니다.응용 프로그램은 Java/ART (Android 런타임)와 나란히 실행 되며 JNI를 통해 네이티브 형식과 상호 작용 합니다 (Xamarin.ios 제한참조).
Windows– C# IL로 컴파일되고 기본 제공 런타임에 의해 실행 되며 Xamarin 도구가 필요 하지 않습니다.Xamarin의 지침에 따라 Windows 응용 프로그램을 디자인 하면 iOS 및 Android에서 코드를 보다 간단 하 게 다시 사용할 수 있습니다.또한 유니버설 Windows 플랫폼에는 Xamarin.ios ' AOT 컴파일과 유사 하 게 작동 하는.NET 네이티브옵션이 있습니다.
런타임 ' 컴파일 ' –를 사용 하 여System.Reflection.Emit동적으로 코드를 생성 하는 것은 피해 야 합니다.
Apple 커널을 사용 하면 iOS 장치에서 동적 코드를 생성할 수 없으므로 Xamarin.ios에서는 코드를 즉시 내보낼 수 없습니다.마찬가지로 동적 언어 런타임 기능은 Xamarin 도구와 함께 사용할 수 없습니다.
일부 리플렉션 기능이 작동 합니다 (예:Monotouch.dialog은 코드를 생성 하는 것이 아니라 리플렉션 API에 사용 됩니다.
플랫폼 SDK 액세스
Xamarin을 사용 하면 플랫폼별 SDK에서 제공 하는 기능을 친숙 C# 한 구문으로 쉽게 액세스할 수 있습니다.
ios– Xamarin.ios는 Apple의 CocoaTouch SDK 프레임 워크를 참조할 수 있는 네임 스페이스로 노출 C#합니다.예를 들어 모든 사용자 인터페이스 컨트롤을 포함 하는 uikit 프레임 워크를 간단한using UIKit;문에 포함할 수 있습니다.
Android– Xamarin android는 Google의 Android SDK를 네임 스페이스로 노출 하므로 사용자 인터페이스 컨트롤에 액세스using Android.Views;하는 등의 using 문을 사용 하 여 지원 되는 SDK의 모든 부분을 참조할 수 있습니다.
Windows – windows 응용 프로그램은 Windows에서 Visual Studio를 사용 하 여 빌드됩니다.프로젝트 형식에는 Windows Forms, WPF, WinRT 및 UWP (유니버설 Windows 플랫폼)가 포함 됩니다.
개발자를 위한 원활한 통합
Xamarin의 장점에도 불구 하 고, Xamarin.ios 및 Xamarin.ios (Microsoft의 Windows Sdk와 함께 제공)의 차이점에도 불구 하 고, 세 플랫폼 모두에서 다시 C# 사용할 수 있는 코드를 작성 하기 위한 원활한 환경을 제공 합니다.
비즈니스 논리, 데이터베이스 사용, 네트워크 액세스 및 기타 일반 기능을 한 번 작성 하 여 각 플랫폼에서 다시 사용 하 여 네이티브 응용 프로그램으로 표시 하 고 수행 하는 플랫폼별 사용자 인터페이스에 대 한 기초를 제공할 수 있습니다.
IDE (통합 개발 환경) 가용성
Visual Studio의 Mac 또는 Windows에서 Xamarin 개발을 수행할 수 있습니다.선택한 IDE는 대상 플랫폼에 따라 결정 됩니다.
Windows 앱은 windows 에서만 개발할 수 있으므로 iOS, Android및windows 용으로 빌드하려면 Windows 용 Visual Studio가 필요 합니다.그러나 Windows 및 Mac 컴퓨터 간에 프로젝트와 파일을 공유할 수 있으므로 Mac에서 iOS 및 Android 앱을 빌드할 수 있으며 나중에 Windows 프로젝트에 공유 코드를 추가할 수 있습니다.
IOS 응용 프로그램을 개발 하려면 macOS를 실행 하는 Mac 컴퓨터가 필요 합니다.Visual Studio를 사용 하 여 Visual Studio에서 Xamarin을 사용 하 여 iOS 응용 프로그램을 작성 하 고 배포할 수도 있습니다.그러나 Mac은 빌드 및 라이선스를 위해 여전히 필요 합니다.
테스트에 대 한 컴파일러 및 시뮬레이터를 제공 하려면 Apple의 Xcode IDE가 설치 되어 있어야 합니다.자신의 장치에서무료로테스트할 수 있지만 배포를 위해 응용 프로그램을 빌드할 수 있습니다 (예:앱 스토어) Apple의 개발자 프로그램 (연간 $99 USD)에 가입 해야 합니다.응용 프로그램을 제출 하거나 업데이트할 때마다 고객이 다운로드 하는 데 사용할 수 있도록 하려면 먼저 Apple에서 해당 응용 프로그램을 검토 하 고 승인 해야 합니다.
Visual Studio IDE를 사용 하 여 코드를 작성 하 고, 화면 레이아웃을 프로그래밍 방식으로 작성 하거나, 두 IDE에서 Xamarin의 iOS Designer를 사용 하 여 편집할 수 있습니다.
Android 응용 프로그램을 개발 하려면 Java 및 Android Sdk를 설치 해야 합니다.이는 빌드, 배포 및 테스트에 필요한 컴파일러, 에뮬레이터 및 기타 도구를 제공 합니다.Java, Google의 Android SDK 및 Xamarin 도구는 모두 Windows 및 macOS에 설치 하 고 실행할 수 있습니다.권장 되는 구성은 다음과 같습니다.
Visual Studio 2019을 사용 하는 Windows 10
Mac 용 Visual Studio 2019을 사용 하는 macOS Mojave (10.11 +)
Xamarin은 필수 Java, Android 및 Xamarin 도구 (화면 레이아웃에 대 한 비주얼 디자이너 포함)를 사용 하 여 시스템을 구성 하는 통합 설치 관리자를 제공 합니다.자세한 지침은Xamarin Android 설치 가이드를 참조 하세요.
Google의 라이선스 없이 실제 장치에서 응용 프로그램을 빌드 및 테스트할 수 있지만 스토어 (예: Google Play, Amazon 또는 barnes and & Noble)를 통해 응용 프로그램을 배포 하기 위해 등록 요금은 운영자에 게 지불 될 수 있습니다.Google Play는 앱을 즉시 게시 하 고, 다른 매장에는 Apple과 비슷한 승인 프로세스가 있습니다.
Windows
Windows 앱 (WinForms, WPF 또는 UWP)은 Visual Studio를 사용 하 여 빌드됩니다.Xamarin을 직접 사용 하지 않습니다.그러나 Windows C# , IOS 및 Android에서 코드를 공유할 수 있습니다.Microsoft개발자 센터를 방문 하 여 Windows 개발에 필요한 도구에 대해 알아보세요.
UI(사용자 인터페이스) 만들기
Xamarin을 사용 하는 경우의 주요 혜택은 응용 프로그램 사용자 인터페이스가 각 플랫폼에서 네이티브 컨트롤을 사용 하 여 목표-C 또는 Java (각각 iOS 및 Android 용)로 작성 된 응용 프로그램에서 구별할 수 없는 앱을 만드는 것입니다.
앱에서 화면을 작성 하는 경우 각 플랫폼에 사용할 수 있는 디자인 도구를 사용 하 여 코드에서 컨트롤을 레이아웃 하거나 전체 화면을 만들 수 있습니다.
프로그래밍 방식으로 컨트롤 만들기
각 플랫폼에서 코드를 사용 하 여 사용자 인터페이스 컨트롤을 화면에 추가할 수 있습니다.이는 컨트롤 위치 및 크기에 대 한 픽셀 좌표를 하드 코딩 하는 경우 완성 된 디자인을 시각화 하기 어려울 수 있기 때문에 시간이 많이 걸릴 수 있습니다.
특히 iPhone 및 iPad 화면 크기를 다르게 조정 하거나 크기를 조정 하는 보기를 빌드하기 위한 iOS의 경우 프로그래밍 방식으로 컨트롤을 만들면 이점이 있습니다.
비주얼 디자이너
각 플랫폼에는 화면 레이아웃을 시각적으로 레이아웃 하는 다른 방법이 있습니다.
ios– Xamarin의 ios 디자이너는 끌어서 놓기 기능 및 속성 필드를 사용 하 여 뷰를 쉽게 작성할 있습니다.전체적으로 이러한 뷰는 스토리 보드를 구성 하며에서 액세스할 수 있습니다.프로젝트에 포함 된 스토리 보드 파일입니다.
Android– Xamarin은 Visual Studio 용 android 끌어서 놓기 UI 디자이너를 제공 합니다.Android 화면 레이아웃은로 저장 됩니다.Xamarin tools를 사용 하는 경우 xml 파일
Windows– Microsoft는 Visual Studio 및 Blend에서 끌어서 놓기 UI 디자이너를 제공 합니다.화면 레이아웃은로 저장 됩니다. XAML 파일.
이러한 스크린샷에는 각 플랫폼에서 사용할 수 있는 시각적 화면 디자이너가 나와 있습니다.
모든 경우에서 시각적으로 만드는 요소를 코드에서 참조할 수 있습니다.
사용자 인터페이스 고려 사항
Xamarin을 사용 하 여 플랫폼 간 응용 프로그램을 빌드하는 주요 이점은 네이티브 UI 도구 키트를 활용 하 여 사용자에 게 친숙 한 인터페이스를 제공할 수 있다는 것입니다.또한 UI는 다른 네이티브 응용 프로그램 만큼 빠르게 수행 됩니다.
일부 UI 메타포는 여러 플랫폼에서 작동 합니다. 예를 들어 세 플랫폼 모두 유사한 스크롤 목록 컨트롤을 사용 합니다. 그러나 응용 프로그램에서 ' 느낌 '이 되도록 하려면 적절 한 경우 UI에서 플랫폼별 사용자 인터페이스 요소를 활용 해야 합니다.플랫폼별 UI 메타포의 예는 다음과 같습니다.
iOS– 화면 아래쪽에 있는 탭, 소프트 뒤로 단추를 사용 하 여 계층적 탐색
Android– 하드웨어/시스템-소프트웨어 뒤로 단추, 작업 메뉴, 화면 맨 위에 있는 탭
Windows– windows 앱은 데스크톱, 태블릿 (예: Microsoft Surface) 및 휴대폰에서 실행할 수 있습니다.예를 들어 Windows 10 장치에는 하드웨어 뒤로 단추와 라이브 타일이 있을 수 있습니다.
Xamarin 플랫폼을 사용 하면 모든 플랫폼에서 기존 C# 코드를 다시 사용할 수 있을 뿐만 아니라 각 플랫폼에 대해 기본적으로 작성 된 라이브러리를 통합할 수 있습니다.
C#원본 및 라이브러리
Xamarin 제품은 및 .NET C# framework를 사용 하기 때문에 많은 기존 소스 코드 (오픈 소스 및 사내 프로젝트 모두)를 Xamarin.ios 또는 xamarin Android 프로젝트에서 다시 사용할 수 있습니다.일반적으로 소스는 Xamarin 솔루션에 추가 될 수 있으며 즉시 작동 합니다.지원 되지 않는 .NET framework 기능이 사용 된 경우 약간의 조정 기능이 필요할 수 있습니다.
Xamarin.ios 또는 C# xamarin에서 사용할 수 있는 원본의 예는 다음과 같습니다. SQLite-NET, Newtonsoft.json 및 SharpZipLib.
목표-C 바인딩 + 바인딩 프로젝트
Xamarin은 Xamarin.ios 프로젝트에서 목표 C 라이브러리를 사용할 수 있도록 하는 바인딩을 만드는 데 도움이 되는btouch라는 도구를 제공 합니다.이 작업을 수행 하는 방법에 대 한 자세한 내용은바인딩 목표-C 형식 설명서를 참조 하세요.
Xamarin.ios에서 사용할 수 있는 목적-C 라이브러리의 예는 다음과 같습니다. RedLaser 바코드 스캔, Google 분석 및 PayPal 통합.Github에서 오픈 소스 xamarin.ios 바인딩을 사용할 수 있습니다.
.jar 바인딩 + 바인딩 프로젝트
Xamarin은 Xamarin.ios에서 기존 Java 라이브러리를 사용 하도록 지원 합니다.을 사용 하는 방법에 대 한 자세한 내용은Java 라이브러리 바인딩 설명서를 참조 하세요. Xamarin Android의 JAR 파일입니다.
[DllImport("sqlite3", EntryPoint = "sqlite3_open", CallingConvention=CallingConvention.Cdecl)] publicstaticextern Result Open (string filename, out IntPtr db);
이는 iOS 및 Android의 네이티브 C 언어 SQLite 구현에 바인딩됩니다.기존 C API에 익숙한 개발자는 C# 클래스 집합을 생성 하 여 네이티브 API에 매핑하고 기존 플랫폼 코드를 활용할 수 있습니다.Xamarin.ios에서네이티브 라이브러리를 연결하는 방법에 대 한 설명서가 있습니다. xamarin에도 유사한 원칙이 적용 됩니다.
C++via CppSharp
Miel el은블로그의CXXI (현재CppSharp)에 대해 설명 합니다.C++ 라이브러리에 직접 바인딩하는 대신 C 래퍼를 만들어 P/Invoke를 통해 바인딩할 수 있습니다.
임차보증금 미반환으로 경제활동에 어려움을 겪는 소상공인의 경영안정을 위해 임차보증금을 지원해 드리는 사업입니다.
☞ 기존사업장 임대차계약기간 이내에 사업장 이전예정인 또는 이전한 소상공인 등 대상
☞ 기존 사업장 임차보증금 이내(기업당 최고 1억원 이내) 지원
지원분야 및 대상
ㅇ 신청대상 : 다음 각호 중 하나에 해당하는 소상공인으로 공통사항 모두(① ~ ⑤)를 만족해야 함 - 기존사업장 임대차계약기간 이내에 사업장 이전예정인 또는 이전한 소상공인 * 기존 사업장에서 6개월 이상 사업 지속한 경우 신청가능 * 임대차계약서 상 계약기간이 만료되었지만 묵시적갱신으로 계약연장이 인정될 시 신청가능 - 기존사업장 임대차계약기간 이내에 폐업 후 사업장 이전예정 또는 이전한 소상공인 * 기존 사업장에서 6개월 이상 사업 지속한 경우 신청가능 - 기존사업장 임대차계약기간 만료 후, 임차보증금 미반환으로 임차권등기* 후 사업장 이전예정인 또는 이전한 소상공인 * 상가건물임대차보호법 제6조 제1항에 의거, 임대차가 종료된 후 보증금이 반환되지 아니한 경우 임차인은 임차건물의 소재지를 관할하는 지방법원, 지방법원지원 또는 시ㆍ군법원에 임차권등기명령을 신청할 수 있다.
ㅇ 신청가능 자격 - 개인기업은 실제경영자*를 주채무자로 운용(사업자등록증상 대표자 외 실제경영자가 따로 존재하는 경우에는 실제 경영자를 사업자등록증상 공동대표로 등재한 후 주채무자로 운용) ※ “실제경영자”란 다음 각 목의 어느 하나에 해당하는 자를 말한다. 1. 기업에 대한 자신의 영향력을 이용하여 임원 또는 간부사원에게 업무집행을 지시하는 자 2. 직위(사장, 전무, 상무 등), 명칭, 출자지분율 등에 불구하고 기업을 사실상 지배하는 자 - 1개 대표기업 : 개인사업자 1인이 사업자등록 번호가 다른 다수의 개인기업을 영위할 경우, 1개 대표기업(대표 사업자번호)에 대한 대출만 신청 가능 - 대표자 1인 : 2인 이상의 공동대표자에게 각각 대출을 취급할 수 없으며, 대표자 1인(실제경영자)을 정하여 대출 신청(단, 법인사업자는 공동대표이사 모두의 연서를 통해 대출 신청)
ㅇ 지원대상 - 소상공인으로 다음 사항(①~④)을 모두 만족해야 함 ㆍ 「소상공인 보호 및 지원에 관한 법률」 제2조에 따른 소상공인 ① 상시근로자수 - 주된사업에 종사하는 상시근로자 수가 “업종별 상시근로자수 기준”에 해당할 것 ※ 업종별 상시근로자수 기준 ㆍ 제조업, 건설업, 운송업, 광업은 10인 미만 ㆍ 이외 업종은 5인 미만 ② 평균매출액 - 주된 업종 연매출액이 소기업 규모 기준에 해당할 것 ③ 사업구분 - 사업자등록증을 소지한 개인 또는 법인 사업자에 해당할 것 - 비영리 개인사업자ㆍ법인, 조합이 아닐 것 * 법인 등록되어 있는 영리 조합의 경우 지원가능(법인격 없는 조합 지원제외) ④ 업종 - 정책자금 지원제외 업종*이 아닐 것 * 하나의 기업이 2개 이상의 서로 다른 업종을 영위하고 있는 경우, 주된 업종을 기준으로 업종을 구분
지원조건 및 내용
ㅇ 융자범위 : 사업장 임차보증금(운전자금) * 사업장 구입 및 신축자금 제외
ㅇ 대출금리 : 정책자금 기준금리(분기별 변동금리)에 자금별 가산금리 적용 * 2019년 3/4분기 기준 1.82%(분기별 변동금리) + 기본 가산금리(0.6%) ㆍ 정책자금 기준금리 + 자금별 가산금리(년0.6%P) - 기존 대출기업도 정책자금 기준금리 변동에 따라 대출금리가 변동되며, 대출금리는 정부정책에 따라 변경 가능 - 정책자금 기준금리 및 분기별 대출금리는 공단 홈페이지 (www.semas.or.kr) 에 공지 ※ 정책자금 기준금리는 전전분기 종료월 21일부터 전분기 종료월 20일까지 공공자금관리기금이 조달하는 자금의 평균조달금리에 기금운용경비를 추가하여 결정
ㅇ 대출기간 : 5년 이내 (거치 및 분할상환기간은 연단위로 선택 가능) - 비거치 5년 분할상환 - 1년거치 4년 분할상환 - 2년거치 3년 분할상환 - 3년거치 2년 분할상환
ㅇ 대출한도 : 기존 사업장 임차보증금 이내(기업당 최고 1억원 이내)
ㅇ 상환방식 : 거치기간 후 상환기간 동안 매월 원금 균등분할상환 또는 자율상환 * 전액 또는 일부 임의(조기)상환 가능하며, 중도상환수수료 없음
ㅇ 융자방식 : 공단이 자금 신청·접수와 함께 평가*를 통해 일정 평가등급 또는 일정기준 이상인 소상공인을 결정 후 신용 직접대출 * 고용창출, 일자리안정자금 수급업체, 수출실적, 노란우산공제가입 실적 등을 기업평가지표에 반영하여 평가시 우대(가점부여)
ㅇ 자금대출 : 융자대상으로 결정된 소상공인에 대하여, 약정 체결 후 대출
ㅇ 사후관리 : 대출 후 당초 정해진 용도에 부합하는 자금집행 여부의 점검 및 사후관리를 위해, 대출기업에 대한 관련자료(결산재무제표 등) 징구 등 실태조사 실시 * 대출자금의 용도 외 사용 시, 자금 조기회수 등의 제재조치 실행
신청방법 및 서류
ㅇ 신청 방법 : 방문 접수 - 소상공인시장진흥공단 62개 지역센터 : 하단의 [첨부파일] 참조
Visual Studio통합 개발 환경은 코드를 편집, 디버그 및 빌드한 다음, 앱을 게시하는 데 사용할 수 있는 창의적인 실행 패드입니다.IDE(통합 개발 환경)는 소프트웨어 개발의 다양한 측면에서 사용할 수 있는 다양한 기능을 갖춘 프로그램입니다.Visual Studio는 대부분의 IDE가 제공하는 표준 편집기 및 디버거로서 뿐만 아니라, 컴파일러와 코드 완성 도구, 그래픽 디자이너를 비롯해 소프트웨어 개발 프로세스를 쉽게 만들어 주는 많은 기능을 포함하고 있습니다.
이 이미지는 프로젝트와 사용할 만한 몇 가지 주요 도구 창이 열려 있는 Visual Studio를 보여줍니다.
솔루션 탐색기(오른쪽 위) - 코드 파일을 보고, 탐색하고, 관리할 수 있습니다.솔루션 탐색기에서 파일을솔루션 및 프로젝트로 그룹화하여 코드를 구성할 수 있습니다.
편집기 창(가운데) - 대부분 작업을 수행하는 곳으로 파일 콘텐츠가 표시됩니다.코드를 편집하거나 단추 및 텍스트 상자를 사용하여 창과 같은 사용자 인터페이스를 디자인할 수 있습니다.
Visual Studio는 Windows 및 Mac에서 사용할 수 있습니다.Mac용 Visual Studio에는 Visual Studio 2019와 동일한 기능이 많이 있으며 플랫폼 간 앱 및 모바일 앱 개발에 최적화되어 있습니다.이 문서에서는 Windows 버전의 Visual Studio 2019에 중점을 둡니다.
세 가지 Visual Studio 2019 버전은 다음과 같습니다. Community, Professional 및 Enterprise.각 버전에서 지원되는 기능에 대해 알아보려면Visual Studio IDE 비교를 참조하세요.
주요 생산성 향상 기능
소프트웨어를 개발할 때 생산성을 높이는 데 도움이 되는 Visual Studio에서 인기 있는 기능 몇 가지는 다음과 같습니다.
오류 표시선은 물결 모양의 밑줄로, 입력할 때 코드의 오류 또는 잠재적인 문제를 알려줍니다.이러한 시각적 단서를 사용하면 빌드하는 동안이나 프로그램을 실행할 때 오류가 검색될 때까지 기다리지 않고 즉시 문제를 해결할 수 있습니다.오류 표시선 위로 마우스를 가져가면 오류에 대한 추가 정보가 표시됩니다.오류를 수정하기 위한 작업(빠른 작업이라고 함)과 함께 전구가 왼쪽 여백에 나타날 수도 있습니다.
코드 정리
단추를 클릭하여 코드 형식을 지정하고코드 스타일 설정,.editorconfig 규칙및Roslyn 분석기에서 제안하는 코드 수정 사항을 적용합니다.코드 정리는 코드 검토로 이동하기 전에 코드의 문제를 해결하는 데 도움이 됩니다.(현재 C# 코드에만 사용할 수 있습니다.)
Visual Studio는 메뉴, 옵션 및 속성이 매우 다양하여 때때로 버거울 수도 있습니다.검색 상자는 Visual Studio에서 필요한 항목을 빠르게 찾을 수 있는 좋은 방법입니다.찾으려는 이름을 입력하기만 하면 Visual Studio는 원하는 곳으로 정확하게 안내하는 결과를 나열합니다.예를 들어 다른 프로그래밍 언어를 위한 지원을 추가하도록 Visual Studio에 기능을 추가하는 경우 검색 상자를 사용하면 워크로드 또는 개별 구성 요소를 설치하도록 Visual Studio 설치 관리자가 열립니다.
이 섹션에서는 Visual Studio로 할 수 있는 몇 가지 작업을 시도해 볼 간단한 프로젝트를 만듭니다.코딩 지원 기능인IntelliSense를 사용하고, 앱을 디버그하여 프로그램을 실행하는 동안 변수 값이 표시되도록 하고, 색 테마를 변경합니다.
시작하려면Visual Studio를 다운로드하여 시스템에 설치합니다.모듈식 설치 관리자를 사용하면 선호하는 프로그래밍 언어 또는 플랫폼에 필요한 기능 그룹인워크로드를 선택하여 설치할 수 있습니다.프로그램 생성단계를 수행하려면 설치 중에.NET Core 플랫폼 간 개발워크로드를 선택해야 합니다.
Visual Studio를 처음 열면 필요에 따라 Microsoft 계정이나 회사 또는 학교 계정으로로그인할 수 있습니다.
프로그램 만들기
이제 본격적으로 간단한 프로그램을 만들어 보겠습니다.
Visual Studio를 엽니다.
리포지토리 복제, 최근 프로젝트 열기 또는 새 프로젝트 만들기에 대한 다양한 옵션이 포함되어 있는 시작 창이 표시됩니다.
새 프로젝트 만들기를 선택합니다.
새 프로젝트 만들기창이 열리고 여러 프로젝트템플릿이 표시됩니다.템플릿에는 지정된 프로젝트 형식에 필요한 기본 파일과 설정이 포함되어 있습니다.
원하는 템플릿을 찾으려면 검색 상자에.net core console을 입력합니다.입력한 키워드에 따라 사용 가능한 템플릿 목록이 자동으로 필터링됩니다.언어드롭다운 목록에서C#를 선택하여 추가로 템플릿 결과를 필터링할 수 있습니다.콘솔 앱(.NET Core)템플릿을 선택하고다음을 선택합니다.
새 프로젝트 구성창에서프로젝트 이름상자에HelloWorld를 입력하고, 필요에 따라 프로젝트 파일의 디렉터리 위치를 변경한 다음,만들기를 선택합니다.
Visual Studio가 프로젝트를 만듭니다.이 프로젝트는Console.WriteLine()메서드를 호출하여 리터럴 문자열 “Hello World!”를 표시하는 간단한 “Hello World” 애플리케이션입니다.콘솔(프로그램 출력) 창에서
잠시 후 다음과 같은 정보가 표시됩니다.
애플리케이션의 C# 코드는 대부분의 공간을 차지하는 편집기 창에 표시됩니다.텍스트는 지정된 색으로 자동으로 표시되어 다른 부분(예: 키워드 또는 형식)을 나타냅니다.또한 코드에서 작은 세로 파선은 서로 일치하는 중괄호를 나타내며, 줄 번호는 나중에 코드를 찾는 데 도움이 됩니다.작은 상자 안에 있는 빼기 기호를 선택하여 코드 블록을 축소하거나 확장할 수 있습니다.이 코드 개요 기능을 사용하면 필요 없는 코드를 숨길 수 있으므로 화면 상의 혼란을 최소화할 수 있습니다.프로젝트 파일은솔루션 탐색기라는 창의 오른쪽에 나열됩니다.
다른 메뉴와 도구 창을 사용할 수 있지만 지금은 넘어가겠습니다.
이제 앱을 시작합니다.메뉴 모음의디버그메뉴에서디버깅하지 않고 시작을 선택하면 됩니다.Ctrl+F5를 누를 수도 있습니다.
Visual Studio에서 앱을 빌드하며, 콘솔 창이 열리고Hello World!메시지가 표시됩니다.이제 실행 중인 앱이 있습니다!
콘솔 창을 닫으려면 키보드에서 아무 키나 누릅니다.
앱에 일부 코드를 추가하겠습니다.Console.WriteLine("Hello World!");줄 앞에 다음 C# 코드를 추가합니다.
C#복사
Console.WriteLine("\nWhat is your name?"); var name = Console.ReadLine();
이 코드는 콘솔 창에이름이 무엇입니까?를 표시한 다음, 사용자가 텍스트를 입력한 후Enter키를 누를 때까지 기다립니다.
Console.WriteLine("Hello World!");이라고 표시된 줄을 다음 코드로 변경합니다.
C#복사
Console.WriteLine($"\nHello {name}!");
디버그>디버깅 없이 시작을 선택하거나Ctrl+F5를 눌러 앱을 다시 실행합니다.
Visual Studio에서 앱을 다시 빌드하고, 콘솔 창이 열리며 사용자 이름을 묻는 메시지가 표시됩니다.
전구 아이콘을 선택하여 사용 가능한빠른 작업을 표시합니다.'name'의 이름을 'username'으로 바꾸기를 선택합니다.
프로젝트 전체에서 변수의 이름이 변경됩니다. 이 경우에는 두 군데밖에 없습니다.
이제 IntelliSense를 살펴보겠습니다.Console.WriteLine($"\nHello {username}!");이라고 표시된 줄 아래에DateTime now = DateTime.을 입력합니다.
상자에DateTime클래스의 멤버가 표시됩니다.또한 현재 선택된 멤버의 설명이 별도 상자에 표시됩니다.
클래스의 속성인Now라는 멤버를 두 번 클릭하거나Tab키를 눌러 선택합니다. 끝에 세미콜론을 추가하여 코드 줄을 완성합니다.
그 아래에 다음 코드 줄을 입력하거나 붙여넣습니다.
C#복사
int dayOfYear = now.DayOfYear; Console.Write("Day of year: "); Console.WriteLine(dayOfYear);
팁
Console.Write은 인쇄 후 줄 종결자를 추가하지 않는다는 점에서Console.WriteLine과 약간 다릅니다.즉, 출력으로 전송되는 다음 텍스트가 같은 줄에 인쇄됩니다.코드에서 이러한 각 메서드 위로 마우스를 가져가면 설명을 볼 수 있습니다.
다음으로, 리팩터링을 다시 사용하여 코드를 좀 더 간결하게 만듭니다.DateTime now = DateTime.Now;줄에서 변수now를 클릭합니다.
해당 줄의 여백에 작은 스크루드라이버 아이콘이 나타납니다.
스크루드라이버 아이콘을 클릭하면 Visual Studio에서 제안하는 사항을 볼 수 있습니다.여기에는 코드의 전체 동작을 변경하지 않고 코드 줄을 제거할 수 있는인라인 임시 변수리팩터링이 표시되어 있습니다.
인라인 임시 변수를 클릭하여 코드를 리팩터링합니다.
Ctrl+F5키를 눌러 프로그램을 다시 실행합니다.출력은 다음과 같습니다.
코드 디버그
코드를 작성할 때 코드를 실행하고 버그를 테스트해야 합니다.Visual Studio의 디버깅 시스템을 사용하면 코드를 단계별로 진행하면서 명령문을 한 번에 하나씩 실행하면서 변수를 검사할 수 있습니다.특정 줄에서 코드의 실행을 중지하는중단점을 설정할 수 있습니다.코드를 실행함에 따라 변수의 값이 변경되는 방법 등을 확인할 수 있습니다.
중단점을 설정하여 프로그램이 "이동 중"일 때username변수의 값을 확인하겠습니다.
Console.WriteLine($"\nHello {username}!");이라고 표시된 코드 줄을 찾습니다.이 코드 줄에 중단점을 설정하려면, 즉 이 줄에서 프로그램이 실행을 일시 중지하도록 하려면 편집기의 맨 왼쪽 여백을 클릭합니다.코드 줄의 아무 곳이나 클릭한 다음,F9키를 누를 수도 있습니다.
맨 왼쪽 끝에 빨간색 원이 표시되고 코드가 빨간색으로 강조 표시됩니다.
디버그>디버깅 시작을 선택하거나F5키를 눌러 디버깅을 시작합니다.
콘솔 창이 나타나고 사용자 이름을 묻는 메시지가 표시되면 입력하고Enter키를 누릅니다.
Visual Studio 코드 편집기로 포커스가 돌아오고 중단점이 있는 코드 줄이 노란색으로 강조 표시됩니다.이는 프로그램이 실행할 다음 코드 줄을 의미합니다.
마우스를username변수 위로 가져가면 해당 값을 볼 수 있습니다.또는username을 마우스 오른쪽 단추로 클릭하고조사식 추가를 선택하여 변수를조사식창에 추가할 수 있습니다. 이 창에서 해당 값을 볼 수도 있습니다.