Нужен макрос Visual Studio для добавления баннера ко всем файлам C#

В вашем файле Docker есть две проблемы.

  1. Ваши версии ядра .net не совпадают между FROM microsoft/dotnet:latest и FROM microsoft/dotnet:2.1-aspnetcore-runtime
  2. Попробуйте AS publish опубликовать вывод.

Вот рабочий докер-файл

FROM microsoft/dotnet:2.1-sdk AS publish
COPY . /app
WORKDIR /app/MyWebApp
RUN dotnet build
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.1-aspnetcore-runtime 
EXPOSE 80
WORKDIR /app
COPY --from=publish /app/MyWebApp/out .

ENTRYPOINT ["dotnet", "MyWebApp.dll"]
10
задан DSO 6 January 2009 в 01:08
поделиться

3 ответа

Здесь Вы идете, я обеспечиваю пример для .cs и .vb, но не должен быть труден для Вас скорректировать его к Вашим другим потребностям типа файла: Отредактированный для рекурсивного добавления заголовка к подпапкам

Sub IterateFiles()
    Dim solution As Solution = DTE.Solution
    For Each prj As Project In solution.Projects
        IterateProjectFiles(prj.ProjectItems)
    Next
End Sub

Private Sub IterateProjectFiles(ByVal prjItms As ProjectItems)
    For Each file As ProjectItem In prjItms
        If file.SubProject IsNot Nothing Then
            AddHeaderToItem(file)
            IterateProjectFiles(file.ProjectItems)
        ElseIf file.ProjectItems IsNot Nothing AndAlso file.ProjectItems.Count > 0 Then
            AddHeaderToItem(file)
            IterateProjectFiles(file.ProjectItems)
        Else
            AddHeaderToItem(file)
        End If
    Next
End Sub

Private Sub AddHeaderToItem(ByVal file As ProjectItem)
    DTE.ExecuteCommand("View.SolutionExplorer")
    If file.Name.EndsWith(".cs") OrElse file.Name.EndsWith(".vb") Then
        file.Open()
        file.Document.Activate()

        AddHeader()

        file.Document.Save()
        file.Document.Close()
    End If
End Sub

Private Sub AddHeader()
    Dim cmtHeader As String = "{0} First Line"
    Dim cmtCopyright As String = "{0} Copyright 2008"
    Dim cmtFooter As String = "{0} Footer Line"

    Dim cmt As String

    Select Case DTE.ActiveDocument.Language
        Case "CSharp"
            cmt = "//"
        Case "Basic"
            cmt = "'"
    End Select
    DTE.UndoContext.Open("Header Comment")
    Dim ts As TextSelection = CType(DTE.ActiveDocument.Selection, TextSelection)
    ts.StartOfDocument()
    ts.Text = String.Format(cmtHeader, cmt)
    ts.NewLine()
    ts.Text = String.Format(cmtCopyright, cmt)
    ts.NewLine()
    ts.Text = String.Format(cmtFooter, cmt)
    ts.NewLine()
    DTE.UndoContext.Close()
End Sub
14
ответ дан 3 December 2019 в 19:36
поделиться

Вот jist его. Нет, я не отладил это, которое является осуществлением для читателя. И, это сделано первое, что пришло на ум. (Кроме комментатора Файла... Это - реальный Макрос, который я использую).

function CommentAllFiles
    option explicit

    Dim ActiveProjectFullName
    Dim dte80 As EnvDTE80.Solution2

    ActiveProjectFullName = dte80.Projects.Item(0).FullName
    If ActiveProjectFullName = "" Then
        MsgBox("No project loaded!")
        Exit Sub
    End If

    Err.Number = 0
    doc.Open(ActiveProjectFullName, "Text", True)
    If Err.Number <> 0 Then
        MsgBox("Open " + ActiveProjectFullName + " failed: " & Hex(Err.Number))
        Exit Sub
    End If

    ActiveDocument.Goto(1, 1, vsMovementOptions.vsMovementOptionsMove)

    ' Build search string
    Dim SearchString
    Dim vsFindOptionsValue As Integer
    SearchString = "^SOURCE=.*" + dn + "$"

    while ActiveDocument.Selection.FindText(SearchString, vsFindOptions.vsFindOptionsFromStart + vsFindOptions.vsFindOptionsRegularExpression)
        Dim TheFile
        TheFile = ActiveDocument.Selection.Text
        TheFile = Mid(TheFile, 8)
        doc.Open(TheFile)
    wend
    ActiveDocument.Close()
end function

Попробованный и истинный сумматор "Цветочного горшка":

    Function IsClassDef()
    Dim ColNum
    Dim LineNum
    Dim sText

    sText = ActiveDocument.Selection.ToString()
    If sText = "" Then
        'ActiveDocument.Selection.WordRight(dsExtend)
        'sText = ActiveDocument.Selection
        'sText = ucase(trim(sText))
    End If

    If (sText = "CLASS") Then
        IsClassDef = True
    Else
        IsClassDef = False
    End If
End Function

Sub AddCommentBlock()
    'DESCRIPTION: Add Commecnt block to header, CPP files and Class Defs
    AddCPPFileDesc()
End Sub

Sub AddCPPFileDesc()
    'DESCRIPTION: Add File desc block to the top of a CPP file
    Dim selection As EnvDTE.TextSelection
    ActiveDocument.Selection.StartOfLine()

    Dim editPoint As EnvDTE.EditPoint
    selection = DTE.ActiveDocument.Selection()
    editPoint = selection.TopPoint.CreateEditPoint()

    Dim bOk, sExt, IsCpp, IsHdr, sHeader, IsCSharp
    bOk = True
    IsCpp = False
    IsCSharp = False

    If ActiveDocument.Selection.CurrentLine > 10 Then
        If MsgBox("You are not at the top of the file. Are you sure you want to continue?", vbYesNo + vbDefaultButton2) = vbNo Then
            bOk = False
        End If
    End If

    If (bOk) Then
        sExt = ucase(right(ActiveDocument.Name, 4))
        IsCpp = sExt = ".CPP"
        IsHdr = Right(sExt, 2) = ".H"
        IsCSharp = sExt = ".CS"

        If (IsCpp) Then
            sHeader = left(ActiveDocument.Name, len(ActiveDocument.Name) - 3) + "h"
            FileDescTopBlock(1)
            editPoint.Insert("#include " + Chr(34) + "StdAfx.h" + Chr(34) + vbLf)
            editPoint.Insert("#include " + Chr(34) + sHeader + Chr(34) + vbLf)
        ElseIf (IsCSharp) Then
            FileDescTopBlock(1)
        Else
            If IsHdr Then
                'If IsCLassDef() Then
                'AddClassDef()
                'Else
                AddHeaderFileDesc()
                'End If
            Else
                FileDescTopBlock(1)
            End If
        End If
    End If
End Sub

Sub AddHeaderFileDesc()
    FileDescTopBlock(0)
    Dim selection As EnvDTE.TextSelection
    ActiveDocument.Selection.StartOfLine()

    Dim editPoint As EnvDTE.EditPoint
    selection = DTE.ActiveDocument.Selection()
    editPoint = selection.TopPoint.CreateEditPoint()
    editPoint.Insert("#pragma once" + vbLf)
End Sub


Sub FileDescTopBlock(ByVal HasRevHistory)
    'DESCRIPTION: Add File desc block to the top of a CPP file
    Dim selection As EnvDTE.TextSelection

    ActiveDocument.Selection.StartOfLine()
    ActiveDocument.Selection.EndOfLine()
    Dim sComment
    sComment = ActiveDocument.Selection.ToString()
    If Left(sComment, 2) = "//" Then
        ActiveDocument.Selection.Delete()
        sComment = LTrim(Mid(sComment, 3))
    Else
        sComment = ""
    End If

    Dim sLineBreak
    Dim sFileName
    Dim sBlock
    sLineBreak = "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"
    sFileName = ActiveDocument.Name

    ActiveDocument.Selection.StartOfDocument()
    sBlock = sLineBreak & vbLf & _
            "//  File   : " & sFileName & vbLf & _
           "//  Author : Larry Frieson" & vbLf & _
          "//  Desc   : " & sComment & vbLf & _
         "//  Date   : " & CStr(Now.Date()) & vbLf & _
        "//" & vbLf & _
       "//  Copyright © 20" + Right(CStr(Now.Year.ToString()), 2) + " MLinks Technologies. All rights reserved" + vbLf
    If (HasRevHistory > 0) Then
        sBlock = sBlock & _
                "//" & vbLf & _
               "//  Revision History: " & vbLf & _
              "//    " & CStr(Now) & " created." & vbLf & _
             "// " & vbLf
    End If
    sBlock = sBlock + sLineBreak + vbLf

    Dim editPoint As EnvDTE.EditPoint
    selection = DTE.ActiveDocument.Selection()
    editPoint = selection.TopPoint.CreateEditPoint()
    editPoint.Insert(sBlock)

End Sub

Надежда, которой это помогает или по крайней мере дает Вам некоторое представление. Снова, я не тестировал/отлаживал "выполняющего мертвую петлю летчика исходного файла", я полагаю, что можно обработать это.

Larry

1
ответ дан 3 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: