目录结构
| ├─MediatR_Demo |
| │ ├─Application |
| │ │ └─Movies |
| │ │ ├─Commands |
| │ │ │ └─CreateMovie |
| │ │ └─Queries |
| │ │ ├─GetMovie |
| │ │ └─GetMovies |
| │ ├─Controllers |
| │ ├─Core |
| │ │ └─Enums |
| │ ├─Domain |
| │ │ ├─DTOs |
| │ │ │ ├─Requests |
| │ │ │ │ └─Movie |
| │ │ │ └─Responses |
| │ │ │ └─Movie |
| │ │ └─Entities |
| │ │ └─Movie |
| │ ├─Repository |
| │ │ └─Context |
| using MediatR; |
| using MediatR_Demo.Core.Enums; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Commands.CreateMovie; |
| |
| public class CreateMovieCommand : IRequest<CreateMovieDto> |
| { |
| public CreateMovieCommand(string? title, string? description, MovieGenre? genre, int? rating) |
| { |
| Title = title; |
| Description = description; |
| Genre = genre; |
| Rating = rating; |
| } |
| |
| public string? Title { get; set; } |
| public string? Description { get; set; } |
| public MovieGenre? Genre { get; set; } |
| public int? Rating { get; set; } |
| } |
| |
| using MediatR; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| using MediatR_Demo.Repository.Context; |
| |
| namespace MediatR_Demo.Application.Movies.Commands.CreateMovie |
| { |
| public class CreateUserCommandHandler : IRequestHandler<CreateMovieCommand, CreateMovieDto> |
| { |
| private readonly ApplicationDbContext _dbContext; |
| |
| public CreateUserCommandHandler(ApplicationDbContext dbContext) |
| { |
| _dbContext = dbContext; |
| } |
| |
| public async Task<CreateMovieDto> Handle(CreateMovieCommand request, CancellationToken cancellationToken) |
| { |
| Domain.Entities.Movie.Movie movie = request.CreateMovie(); |
| await _dbContext.Movies.AddAsync(movie); |
| await _dbContext.SaveChangesAsync(); |
| |
| return new CreateMovieDto(movie.Id); |
| } |
| } |
| } |
| |
| using MediatR_Demo.Domain.Entities.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Commands.CreateMovie |
| { |
| public static class CreateUserCommandExtension |
| { |
| public static Movie CreateMovie(this CreateMovieCommand command) |
| { |
| var movie = new Movie |
| ( |
| command.Title, |
| command.Description, |
| command.Genre, |
| command.Rating |
| ); |
| |
| return movie; |
| } |
| } |
| } |
| |
| using MediatR; |
| using MediatR_Demo.Application.Movies.Commands.CreateMovie; |
| using MediatR_Demo.Application.Movies.Queries.GetMovie; |
| using MediatR_Demo.Application.Movies.Queries.GetMovies; |
| using MediatR_Demo.Domain.DTOs.Requests.Movie; |
| using Microsoft.AspNetCore.Http; |
| using Microsoft.AspNetCore.Mvc; |
| |
| namespace MediatR_Demo.Controllers |
| { |
| [Route("api/[controller]")] |
| [ApiController] |
| public class MovieController : ControllerBase |
| { |
| private readonly IMediator _mediator; |
| |
| public MovieController(IMediator mediator) |
| { |
| _mediator = mediator; |
| } |
| |
| [HttpGet] |
| public async Task<IActionResult> GetMovies() |
| { |
| var movies = await _mediator.Send(new GetMoviesQuery()); |
| |
| if (movies != null) |
| { |
| return Ok(movies); |
| } |
| |
| return NotFound("No movies in database. Please add a movie first."); |
| } |
| |
| [HttpGet("/getmovies/{id}")] |
| public async Task<IActionResult> GetMovie(long id) |
| { |
| var movie = await _mediator.Send(new GetMovieQuery(id)); |
| |
| if (movie != null) |
| { |
| return Ok(movie); |
| } |
| |
| return NotFound($"No movie in database with ID: {id}."); |
| |
| } |
| |
| [HttpPost] |
| public async Task<IActionResult> CreateMovie([FromBody] CreateMovieRequest request) |
| { |
| var movie = await _mediator.Send(new CreateMovieCommand( |
| request.Title, |
| request.Description, |
| request.Genre, |
| request.Rating)); |
| |
| return Ok(movie); |
| } |
| } |
| } |
| |
| |
| |
| using MediatR; |
| using MediatR_Demo.Repository.Context; |
| using Microsoft.EntityFrameworkCore; |
| |
| |
| var builder = WebApplication.CreateBuilder(args); |
| |
| |
| |
| builder.Services.AddControllers(); |
| |
| builder.Services.AddEndpointsApiExplorer(); |
| builder.Services.AddSwaggerGen(); |
| builder.Services.AddDbContext<ApplicationDbContext>( |
| options => options.UseSqlServer(builder.Configuration.GetConnectionString("Standard"))); |
| |
| builder.Services.AddMediatR(typeof(Program)); |
| |
| |
| var app = builder.Build(); |
| |
| |
| if (app.Environment.IsDevelopment()) |
| { |
| app.UseSwagger(); |
| app.UseSwaggerUI(); |
| } |
| |
| app.UseHttpsRedirection(); |
| |
| app.UseAuthorization(); |
| |
| app.MapControllers(); |
| |
| app.Run(); |
| |
| |
| |
| |
| |
| |
| |
| { |
| "sdk": { |
| "version": "6.0.423" |
| } |
| } |
CQRS-and-MediatR-demo-master\MediatR_Demo\Repository\Context\ApplicationDbContext.cs
| using MediatR_Demo.Domain.Entities.Movie; |
| using Microsoft.EntityFrameworkCore; |
| |
| namespace MediatR_Demo.Repository.Context |
| { |
| public class ApplicationDbContext : DbContext |
| { |
| public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) |
| { |
| } |
| |
| public DbSet<Movie> Movies { get; set; } |
| } |
| } |
| |
| |
| |
| set "scriptPath=%cd%" |
| python D:\Python.Script\zz.py "%scriptPath%" |
| |
| |
| |
| |
| |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| using MediatR_Demo.Domain.Entities.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovie; |
| |
| public static class GetMovieQueryExtensions |
| { |
| public static GetMovieDto MapTo(this Movie movie) |
| { |
| return new GetMovieDto |
| { |
| Id = movie.Id, |
| Title = movie.Title, |
| Description = movie.Description, |
| Genre = movie.Genre, |
| Rating = movie.Rating |
| }; |
| } |
| } |
| |
| using MediatR; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovie; |
| |
| |
| public class GetMovieQuery : IRequest<GetMovieDto> |
| { |
| public long? Id { get; set; } |
| |
| public GetMovieQuery(long? id) |
| { |
| Id = id; |
| } |
| } |
| |
| |
| using MediatR; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| using MediatR_Demo.Repository.Context; |
| using Microsoft.EntityFrameworkCore; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovie; |
| |
| |
| public class GetMovieQueryHandler : IRequestHandler<GetMovieQuery, GetMovieDto> |
| { |
| private readonly ApplicationDbContext _dbContext; |
| |
| public GetMovieQueryHandler(ApplicationDbContext dbContext) |
| { |
| _dbContext = dbContext; |
| } |
| |
| public async Task<GetMovieDto> Handle( |
| GetMovieQuery request, |
| CancellationToken cancellationToken |
| ) |
| { |
| var movie = await _dbContext.Movies.Where(x => x.Id == request.Id).FirstOrDefaultAsync(); |
| |
| if (movie != null) |
| { |
| var movieItem = movie.MapTo(); |
| return movieItem; |
| } |
| return null; |
| } |
| } |
| |
| using MediatR; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| using MediatR_Demo.Repository.Context; |
| using Microsoft.EntityFrameworkCore; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovies |
| { |
| |
| public class GetMoviesQueryHandler : IRequestHandler<GetMoviesQuery, IList<GetMovieDto>> |
| { |
| |
| private readonly ApplicationDbContext _dbContext; |
| |
| public GetMoviesQueryHandler(ApplicationDbContext dbContext) |
| { |
| _dbContext = dbContext; |
| } |
| |
| public async Task<IList<GetMovieDto>> Handle(GetMoviesQuery request, CancellationToken cancellationToken) |
| { |
| var movies = await _dbContext.Movies.ToListAsync(); |
| var movieList = new List<GetMovieDto>(); |
| foreach (var movieItem in movies) |
| { |
| var movie = movieItem.MapTo(); |
| movieList.Add(movie); |
| } |
| |
| return movieList; |
| } |
| } |
| } |
| |
CQRS-and-MediatR-demo-master\MediatR_Demo\Domain\Entities\Movie\Movie.cs
| using MediatR_Demo.Core.Enums; |
| |
| namespace MediatR_Demo.Domain.Entities.Movie |
| { |
| public class Movie |
| { |
| public Movie(string? title, string? description, MovieGenre? genre, int? rating) |
| { |
| Title = title; |
| Description = description; |
| Genre = genre; |
| Rating = rating; |
| } |
| |
| public long Id { get; set; } |
| public string? Title { get; set; } |
| public string? Description { get; set; } |
| public MovieGenre? Genre { get; set; } |
| public int? Rating { get; set; } |
| } |
| } |
CQRS-and-MediatR-demo-master\MediatR_Demo\Domain\DTOs\Responses\Movie\GetMovieDto.cs
| using MediatR_Demo.Core.Enums; |
| |
| namespace MediatR_Demo.Domain.DTOs.Responses.Movie |
| { |
| public class GetMovieDto |
| { |
| public long Id { get; set; } |
| public string? Title { get; set; } |
| public string? Description { get; set; } |
| public MovieGenre? Genre { get; set; } |
| public int? Rating { get; set; } |
| } |
| } |
| |
CQRS-and-MediatR-demo-master\MediatR_Demo\Domain\DTOs\Responses\Movie\CreateMovieDto.cs
| namespace MediatR_Demo.Domain.DTOs.Responses.Movie |
| { |
| public class CreateMovieDto |
| { |
| public CreateMovieDto(long id) |
| { |
| Id = id; |
| } |
| |
| public long Id { get; set; } |
| } |
| } |
| |
CQRS-and-MediatR-demo-master\MediatR_Demo\Domain\DTOs\Requests\Movie\CreateMovieRequest.cs
| using MediatR_Demo.Core.Enums; |
| |
| namespace MediatR_Demo.Domain.DTOs.Requests.Movie |
| { |
| public class CreateMovieRequest |
| { |
| public string? Title { get; set; } |
| public string? Description { get; set; } |
| public MovieGenre? Genre { get; set; } |
| public int? Rating { get; set; } |
| } |
| } |
| |
| namespace MediatR_Demo.Core.Enums |
| { |
| public enum MovieGenre |
| { |
| Action, |
| Comedy, |
| Drama, |
| Fantasy, |
| Horror, |
| Mystery, |
| Romance, |
| Thriller, |
| Western |
| } |
| } |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| using MediatR_Demo.Domain.Entities.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovies |
| { |
| public static class GetMoviesQueryExtensions |
| { |
| public static GetMovieDto MapTo(this Movie movie) |
| { |
| return new GetMovieDto |
| { |
| Id = movie.Id, |
| Title = movie.Title, |
| Description = movie.Description, |
| Genre = movie.Genre, |
| Rating = movie.Rating |
| }; |
| } |
| } |
| } |
| |
| using MediatR; |
| using MediatR_Demo.Domain.DTOs.Responses.Movie; |
| |
| namespace MediatR_Demo.Application.Movies.Queries.GetMovies |
| { |
| public class GetMoviesQuery : IRequest<IList<GetMovieDto>> |
| { |
| } |
| } |
| |
| <Project Sdk="Microsoft.NET.Sdk.Web"> |
| |
| <PropertyGroup> |
| <TargetFramework>net6.0</TargetFramework> |
| <Nullable>enable</Nullable> |
| <ImplicitUsings>enable</ImplicitUsings> |
| </PropertyGroup> |
| |
| <ItemGroup> |
| <PackageReference Include="MediatR" Version="10.0.1" /> |
| <PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="10.0.1" /> |
| <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.6" /> |
| <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.6" /> |
| <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.6"> |
| <PrivateAssets>all</PrivateAssets> |
| <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
| </PackageReference> |
| <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> |
| </ItemGroup> |
| |
| </Project> |
| |
| { |
| "ConnectionStrings": { |
| "Standard": "Server=localhost;Database=mediatr-demo;Trusted_Connection=True;" |
| }, |
| "Logging": { |
| "LogLevel": { |
| "Default": "Information", |
| "Microsoft.AspNetCore": "Warning" |
| } |
| }, |
| "AllowedHosts": "*" |
| } |
| |
| { |
| "Logging": { |
| "LogLevel": { |
| "Default": "Information", |
| "Microsoft.AspNetCore": "Warning" |
| } |
| } |
| } |
| |
| |
| Microsoft Visual Studio Solution File, Format Version 12.00 |
| # Visual Studio Version 17 |
| VisualStudioVersion = 17.0.32014.148 |
| MinimumVisualStudioVersion = 10.0.40219.1 |
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediatR_Demo", "MediatR_Demo\MediatR_Demo.csproj", "{40AF7C5A-7DFD-452F-BB6F-47E42F59F27D}" |
| EndProject |
| Global |
| GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| Debug|Any CPU = Debug|Any CPU |
| Release|Any CPU = Release|Any CPU |
| EndGlobalSection |
| GlobalSection(ProjectConfigurationPlatforms) = postSolution |
| {40AF7C5A-7DFD-452F-BB6F-47E42F59F27D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
| {40AF7C5A-7DFD-452F-BB6F-47E42F59F27D}.Debug|Any CPU.Build.0 = Debug|Any CPU |
| {40AF7C5A-7DFD-452F-BB6F-47E42F59F27D}.Release|Any CPU.ActiveCfg = Release|Any CPU |
| {40AF7C5A-7DFD-452F-BB6F-47E42F59F27D}.Release|Any CPU.Build.0 = Release|Any CPU |
| EndGlobalSection |
| GlobalSection(SolutionProperties) = preSolution |
| HideSolutionNode = FALSE |
| EndGlobalSection |
| GlobalSection(ExtensibilityGlobals) = postSolution |
| SolutionGuid = {932BD9F0-738E-40A5-8E0B-276918C9FF07} |
| EndGlobalSection |
| EndGlobal |
| |
| ## Ignore Visual Studio temporary files, build results, and |
| ## files generated by popular Visual Studio add-ons. |
| ## |
| ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore |
| |
| # User-specific files |
| *.rsuser |
| *.suo |
| *.user |
| *.userosscache |
| *.sln.docstates |
| |
| # User-specific files (MonoDevelop/Xamarin Studio) |
| *.userprefs |
| |
| # Mono auto generated files |
| mono_crash.* |
| |
| # Build results |
| [Dd]ebug/ |
| [Dd]ebugPublic/ |
| [Rr]elease/ |
| [Rr]eleases/ |
| x64/ |
| x86/ |
| [Ww][Ii][Nn]32/ |
| [Aa][Rr][Mm]/ |
| [Aa][Rr][Mm]64/ |
| bld/ |
| [Bb]in/ |
| [Oo]bj/ |
| [Oo]ut/ |
| [Ll]og/ |
| [Ll]ogs/ |
| |
| # Visual Studio 2015/2017 cache/options directory |
| .vs/ |
| # Uncomment if you have tasks that create the project's static files in wwwroot |
| #wwwroot/ |
| |
| # Visual Studio 2017 auto generated files |
| Generated\ Files/ |
| |
| # MSTest test Results |
| [Tt]est[Rr]esult*/ |
| [Bb]uild[Ll]og.* |
| |
| # NUnit |
| *.VisualState.xml |
| TestResult.xml |
| nunit-*.xml |
| |
| # Build Results of an ATL Project |
| [Dd]ebugPS/ |
| [Rr]eleasePS/ |
| dlldata.c |
| |
| # Benchmark Results |
| BenchmarkDotNet.Artifacts/ |
| |
| # .NET Core |
| project.lock.json |
| project.fragment.lock.json |
| artifacts/ |
| |
| # ASP.NET Scaffolding |
| ScaffoldingReadMe.txt |
| |
| # StyleCop |
| StyleCopReport.xml |
| |
| # Files built by Visual Studio |
| *_i.c |
| *_p.c |
| *_h.h |
| *.ilk |
| *.meta |
| *.obj |
| *.iobj |
| *.pch |
| *.pdb |
| *.ipdb |
| *.pgc |
| *.pgd |
| *.rsp |
| *.sbr |
| *.tlb |
| *.tli |
| *.tlh |
| *.tmp |
| *.tmp_proj |
| *_wpftmp.csproj |
| *.log |
| *.vspscc |
| *.vssscc |
| .builds |
| *.pidb |
| *.svclog |
| *.scc |
| |
| # Chutzpah Test files |
| _Chutzpah* |
| |
| # Visual C++ cache files |
| ipch/ |
| *.aps |
| *.ncb |
| *.opendb |
| *.opensdf |
| *.sdf |
| *.cachefile |
| *.VC.db |
| *.VC.VC.opendb |
| |
| # Visual Studio profiler |
| *.psess |
| *.vsp |
| *.vspx |
| *.sap |
| |
| # Visual Studio Trace Files |
| *.e2e |
| |
| # TFS 2012 Local Workspace |
| $tf/ |
| |
| # Guidance Automation Toolkit |
| *.gpState |
| |
| # ReSharper is a .NET coding add-in |
| _ReSharper*/ |
| *.[Rr]e[Ss]harper |
| *.DotSettings.user |
| |
| # TeamCity is a build add-in |
| _TeamCity* |
| |
| # DotCover is a Code Coverage Tool |
| *.dotCover |
| |
| # AxoCover is a Code Coverage Tool |
| .axoCover/* |
| !.axoCover/settings.json |
| |
| # Coverlet is a free, cross platform Code Coverage Tool |
| coverage*.json |
| coverage*.xml |
| coverage*.info |
| |
| # Visual Studio code coverage results |
| *.coverage |
| *.coveragexml |
| |
| # NCrunch |
| _NCrunch_* |
| .*crunch*.local.xml |
| nCrunchTemp_* |
| |
| # MightyMoose |
| *.mm.* |
| AutoTest.Net/ |
| |
| # Web workbench (sass) |
| .sass-cache/ |
| |
| # Installshield output folder |
| [Ee]xpress/ |
| |
| # DocProject is a documentation generator add-in |
| DocProject/buildhelp/ |
| DocProject/Help/*.HxT |
| DocProject/Help/*.HxC |
| DocProject/Help/*.hhc |
| DocProject/Help/*.hhk |
| DocProject/Help/*.hhp |
| DocProject/Help/Html2 |
| DocProject/Help/html |
| |
| # Click-Once directory |
| publish/ |
| |
| # Publish Web Output |
| *.[Pp]ublish.xml |
| *.azurePubxml |
| # Note: Comment the next line if you want to checkin your web deploy settings, |
| # but database connection strings (with potential passwords) will be unencrypted |
| *.pubxml |
| *.publishproj |
| |
| # Microsoft Azure Web App publish settings. Comment the next line if you want to |
| # checkin your Azure Web App publish settings, but sensitive information contained |
| # in these scripts will be unencrypted |
| PublishScripts/ |
| |
| # NuGet Packages |
| *.nupkg |
| # NuGet Symbol Packages |
| *.snupkg |
| # The packages folder can be ignored because of Package Restore |
| **/[Pp]ackages/* |
| # except build/, which is used as an MSBuild target. |
| !**/[Pp]ackages/build/ |
| # Uncomment if necessary however generally it will be regenerated when needed |
| #!**/[Pp]ackages/repositories.config |
| # NuGet v3's project.json files produces more ignorable files |
| *.nuget.props |
| *.nuget.targets |
| |
| # Microsoft Azure Build Output |
| csx/ |
| *.build.csdef |
| |
| # Microsoft Azure Emulator |
| ecf/ |
| rcf/ |
| |
| # Windows Store app package directories and files |
| AppPackages/ |
| BundleArtifacts/ |
| Package.StoreAssociation.xml |
| _pkginfo.txt |
| *.appx |
| *.appxbundle |
| *.appxupload |
| |
| # Visual Studio cache files |
| # files ending in .cache can be ignored |
| *.[Cc]ache |
| # but keep track of directories ending in .cache |
| !?*.[Cc]ache/ |
| |
| # Others |
| ClientBin/ |
| ~$* |
| *~ |
| *.dbmdl |
| *.dbproj.schemaview |
| *.jfm |
| *.pfx |
| *.publishsettings |
| orleans.codegen.cs |
| |
| # Including strong name files can present a security risk |
| # (https://github.com/github/gitignore/pull/2483#issue-259490424) |
| #*.snk |
| |
| # Since there are multiple workflows, uncomment next line to ignore bower_components |
| # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) |
| #bower_components/ |
| |
| # RIA/Silverlight projects |
| Generated_Code/ |
| |
| # Backup & report files from converting an old project file |
| # to a newer Visual Studio version. Backup files are not needed, |
| # because we have git ;-) |
| _UpgradeReport_Files/ |
| Backup*/ |
| UpgradeLog*.XML |
| UpgradeLog*.htm |
| ServiceFabricBackup/ |
| *.rptproj.bak |
| |
| # SQL Server files |
| *.mdf |
| *.ldf |
| *.ndf |
| |
| # Business Intelligence projects |
| *.rdl.data |
| *.bim.layout |
| *.bim_*.settings |
| *.rptproj.rsuser |
| *- [Bb]ackup.rdl |
| *- [Bb]ackup ([0-9]).rdl |
| *- [Bb]ackup ([0-9][0-9]).rdl |
| |
| # Microsoft Fakes |
| FakesAssemblies/ |
| |
| # GhostDoc plugin setting file |
| *.GhostDoc.xml |
| |
| # Node.js Tools for Visual Studio |
| .ntvs_analysis.dat |
| node_modules/ |
| |
| # Visual Studio 6 build log |
| *.plg |
| |
| # Visual Studio 6 workspace options file |
| *.opt |
| |
| # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) |
| *.vbw |
| |
| # Visual Studio LightSwitch build output |
| **/*.HTMLClient/GeneratedArtifacts |
| **/*.DesktopClient/GeneratedArtifacts |
| **/*.DesktopClient/ModelManifest.xml |
| **/*.Server/GeneratedArtifacts |
| **/*.Server/ModelManifest.xml |
| _Pvt_Extensions |
| |
| # Paket dependency manager |
| .paket/paket.exe |
| paket-files/ |
| |
| # FAKE - F# Make |
| .fake/ |
| |
| # CodeRush personal settings |
| .cr/personal |
| |
| # Python Tools for Visual Studio (PTVS) |
| __pycache__/ |
| *.pyc |
| |
| # Cake - Uncomment if you are using it |
| # tools/** |
| # !tools/packages.config |
| |
| # Tabs Studio |
| *.tss |
| |
| # Telerik's JustMock configuration file |
| *.jmconfig |
| |
| # BizTalk build output |
| *.btp.cs |
| *.btm.cs |
| *.odx.cs |
| *.xsd.cs |
| |
| # OpenCover UI analysis results |
| OpenCover/ |
| |
| # Azure Stream Analytics local run output |
| ASALocalRun/ |
| |
| # MSBuild Binary and Structured Log |
| *.binlog |
| |
| # NVidia Nsight GPU debugger configuration file |
| *.nvuser |
| |
| # MFractors (Xamarin productivity tool) working folder |
| .mfractor/ |
| |
| # Local History for Visual Studio |
| .localhistory/ |
| |
| # BeatPulse healthcheck temp database |
| healthchecksdb |
| |
| # Backup folder for Package Reference Convert tool in Visual Studio 2017 |
| MigrationBackup/ |
| |
| # Ionide (cross platform F# VS Code tools) working folder |
| .ionide/ |
| |
| # Fody - auto-generated XML schema |
| FodyWeavers.xsd |
| ############################################################################### |
| # Set default behavior to automatically normalize line endings. |
| ############################################################################### |
| * text=auto |
| |
| ############################################################################### |
| # Set default behavior for command prompt diff. |
| # |
| # This is need for earlier builds of msysgit that does not have it on by |
| # default for csharp files. |
| # Note: This is only used by command line |
| ############################################################################### |
| #*.cs diff=csharp |
| |
| ############################################################################### |
| # Set the merge driver for project and solution files |
| # |
| # Merging from the command prompt will add diff markers to the files if there |
| # are conflicts (Merging from VS is not affected by the settings below, in VS |
| # the diff markers are never inserted). Diff markers may cause the following |
| # file extensions to fail to load in VS. An alternative would be to treat |
| # these files as binary and thus will always conflict and require user |
| # intervention with every merge. To do so, just uncomment the entries below |
| ############################################################################### |
| #*.sln merge=binary |
| #*.csproj merge=binary |
| #*.vbproj merge=binary |
| #*.vcxproj merge=binary |
| #*.vcproj merge=binary |
| #*.dbproj merge=binary |
| #*.fsproj merge=binary |
| #*.lsproj merge=binary |
| #*.wixproj merge=binary |
| #*.modelproj merge=binary |
| #*.sqlproj merge=binary |
| #*.wwaproj merge=binary |
| |
| ############################################################################### |
| # behavior for image files |
| # |
| # image files are treated as binary by default. |
| ############################################################################### |
| #*.jpg binary |
| #*.png binary |
| #*.gif binary |
| |
| ############################################################################### |
| # diff behavior for common document formats |
| # |
| # Convert binary document formats to text before diffing them. This feature |
| # is only available from the command line. Turn it on by uncommenting the |
| # entries below. |
| ############################################################################### |
| #*.doc diff=astextplain |
| #*.DOC diff=astextplain |
| #*.docx diff=astextplain |
| #*.DOCX diff=astextplain |
| #*.dot diff=astextplain |
| #*.DOT diff=astextplain |
| #*.pdf diff=astextplain |
| #*.PDF diff=astextplain |
| #*.rtf diff=astextplain |
| #*.RTF diff=astextplain |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-09-02 asp.net 架构 mvc 设计模式
2023-09-02 asp.net post reponse location CreatedAtRoute
2023-09-02 c# socket tcp 通信 结构体 字节流 大端序列 小端序列
2022-09-02 element plus自动导入 vue3 typescript ts2304 ElNotification
2022-09-02 vue props 联合类型定义 PropType的使用