Referenčni priročnik projektne datoteke: .acproj
Sintaksa
<Project> <PropertyGroup> <SchemaVersion>2</SchemaVersion> <AssemblyName>Stranke</AssemblyName> <SourceRoot>source</SourceRoot> <BaseOutputPath>build</BaseOutputPath> <DeliveryRoot>delivery</DeliveryRoot> <Configurations>Stranka</Configurations> <TargetAccess>any</TargetAccess> <Template>template</Template> <Accde>false</Accde> <AppMode></AppMode> <ConnectionProfile>DEV</ConnectionProfile> <Finish>FinishBuild</Finish> <Test>AllTests</Test> <ControlBlocks>control-blocks</ControlBlocks> <NeutralLanguage>sl</NeutralLanguage> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Release'"> <Accde>true</Accde> <AppMode>Production</AppMode> <ConnectionProfile>PROD</ConnectionProfile> </PropertyGroup> <ItemGroup> <TablePolicy Include="tblDrzave" Policy="SeedData" /> <TablePolicy Include="tblCache" Policy="Ignore" /> </ItemGroup> </Project>
Povzetek
Projektna datoteka določa aplikacijo Access, mesto njenih izvornih datotek in način, kako jo zgradi posamezna
konfiguracija gradnje. Je datoteka XML za MSBuild, zato jo lahko bere tudi dotnet build; vsa orodja SDK jo razlagajo
enako.
Lastnosti
| Element | Obvezno | Privzeto | Pomen |
|---|---|---|---|
SchemaVersion | da | – | 2. Projekt DATEC Access SDK (shema 1) SDK zavrne in predlaga ukaz migrate. |
AssemblyName | da | – | Ime aplikacije: hkrati ime datoteke podatkovne zbirke in ime njenega projekta VBA, zato mora biti veljaven identifikator VBA. |
SourceRoot | ne | source | Mapa s privzetimi mesti izvornih datotek (Razporeditev in formati izvornih datotek), relativno glede na projektno datoteko. Vrsta izvornih datotek, ki jo postavke izvornih datotek postavijo drugam, je ne uporablja. |
BaseOutputPath | ne | build | Mapa za vse, kar ustvari gradnja, relativno glede na projektno datoteko, kot BaseOutputPath v MSBuildu: podatkovna zbirka konfiguracije v njeni izhodni mapi <BaseOutputPath>\<configuration>, izdaja v <BaseOutputPath>\Delivery. Mapa znotraj mape projekta (brez ..); ni v nadzoru različic in SDK v njej nikoli ne išče izvornih datotek. |
DeliveryRoot | ne | delivery | Mapa z nastavitvami izdaje, relativno glede na projektno datoteko: delivery-settings.json, profili izdaje, publisher.json in projekti zaganjalnika. Mapa znotraj mape projekta (brez ..); v nadzoru različic skupaj z izvornimi datotekami. |
Configurations | ne | brez | Konfiguracije gradnje poleg konfiguracij Debug in Release, ločene z ;, kot v projektu MSBuild v slogu SDK (Stranka;Test). SDK pozna tudi konfiguracijo, ki tu ni navedena, če ima lastno skupino lastnosti (glejte spodaj). |
TargetAccess | ne | any | x86, x64 ali any: ali aplikacija potrebuje 32-bitni ali 64-bitni Access ali deluje v obeh. check ne uspe, če ima računalnik nameščeno drugo različico. |
Template | ne | brez | Projekt SDK, na katerem temelji aplikacija: mapa z eno datoteko .acproj ali ta datoteka; relativno, absolutno ali pod mapo iz nastavitve paths.templates (WKL_ACCESS_TEMPLATES, Nastavitve SDK). Glejte Predloge. |
Accde | ne | false | Po datoteki ACCDB izdela ACCDE. ACCDE deluje samo v tisti 32- ali 64-bitni različici programa Access, v kateri je bila izdelana (Microsoft); ACCDE za 64-bitni Office zgradite s 64-bitnim programom Access. |
AppMode | ne | brez | Development, Administration ali Production: način modela aplikacije WKL Forms Object Library, za katerega je izdelana ACCDE. Glejte AppMode. |
ConnectionProfile | ne | brez | Profil povezave upravitelja povezav WKL Linked Tables Manager (DEV, TEST, PROD …), s katerim gradnja poveže tabele; brez profila gradnja ne poveže nobene tabele. Gradnja se pri tem dejansko poveže z viri podatkov profila, zato računalnik za gradnjo potrebuje gonilnike, omrežni dostop in prijavo brez poziva; enako velja za roundtrip. |
Finish | ne | brez | Javna funkcija standardnega modula izvornih datotek, ki jo gradnja izvede na koncu. Glejte Zaključna funkcija. |
Test | ne | brez | Javna funkcija standardnega modula izvornih datotek, ki vrne imena preizkusnih postopkov, ki jih izvede wkl-office test. Glejte Preizkusna funkcija. |
ControlBlocks | ne | mapa predloge, nato paths.controlBlocks | Mapa z gradniki kontrolnikov WKL Forms Object Library, ki v obrazcih nadomestijo ograde. Velja prva nastavljena vrednost v vrstnem redu: ta lastnost, vrednost predloge, spremenljivka okolja WKL_ACCESS_CONTROL_BLOCKS, nastavitev paths.controlBlocks (Nastavitve SDK). Relativna pot se razreši glede na mapo projektne datoteke. Na razvijalskem računalniku je to mapa control-blocks paketa izdaje, na primer %LOCALAPPDATA%\WKL\Access Components\<version>\control-blocks. |
NeutralLanguage | ne | brez | Koda jezika nevtralnih besedil (source/texts/neutral.json), na primer sl: jezik, v katerem je aplikacija napisana. Ta jezik ne potrebuje lastne datoteke z besedili, ključi brez besedila v njem pa se ne javljajo. Glejte Struktura izvornih datotek: besedila aplikacije. |
AccessDefaultFolder<Kind> | ne | osnovna mapa prve postavke te vrste, sicer privzeto mesto | Mapa, v katero izvoz zapiše nov objekt te vrste, relativno glede na projektno datoteko, na primer <AccessDefaultFolderForm>ui\pages</AccessDefaultFolderForm>. <Kind> je ime postavke brez Access (glejte Postavke izvornih datotek); vrste iz ene same datoteke te lastnosti nimajo. |
PropertyGroup s Condition="'$(Configuration)' == '<name>'" za to konfiguracijo preglasi Accde, AppMode in
ConnectionProfile; druge lastnosti so enake za vse konfiguracije (glejte Opombe).
Postavke
| Postavka | Metapodatki | Pomen |
|---|---|---|
TablePolicy Include="<table>" | Policy | Kaj gradnja in izvoz naredita s podatki lokalne tabele (spodaj). Tabela, ki ni navedena, ima pravilnik SchemaOnly. |
ProjectReference Include="<path>" | – | Drug projekt Access, na katerega podatkovno zbirko se aplikacija sklicuje kot na knjižnico. SDK ga prebere, vendar ga gradnja ne uporablja. |
| Pravilnik | Izvoz zapiše | Gradnja naloži |
|---|---|---|
SchemaOnly | shemo | prazno tabelo |
SeedData | shemo in podatke | shemo in podatke (tabele za iskanje, konfiguracija) |
FullData | shemo in podatke | shemo in podatke (majhne lokalne podatkovne zbirke, ki se v nadzoru različic hranijo skupaj s podatki) |
Generated | shemo | prazno tabelo; napolni jo zaključna funkcija |
Ignore | nič | nič (predpomnilniki, stanje posameznega uporabnika) |
Postavke izvornih datotek
Brez dodatnih nastavitev so izvorne datoteke na stalnih mestih pod SourceRoot
(Razporeditev in formati izvornih datotek). Postavke izvornih datotek postavijo vrsto izvornih
datotek drugam: vsaka postavka zajame datoteke, ki jih navaja njen atribut Include, relativno glede na mapo
projektne datoteke.
<ItemGroup> <AccessForm Include="ui\pages\*.form.txt;ui\dialogs\*.form.txt" Exclude="ui\pages\old\**" /> <AccessTable Include="db\tables\*.table.json" /> <AccessReferences Include="db\references.json" /> </ItemGroup>
| Postavka | Vrsta | Privzeto mesto pod SourceRoot |
|---|---|---|
AccessQuery | poizvedbe .query.txt | queries/*.query.txt |
AccessModule | standardni moduli .bas | modules/*.bas |
AccessClass | moduli razreda .cls | classes/*.cls |
AccessForm | obrazci .form.txt | forms/*.form.txt |
AccessReport | poročila .report.txt (nastavitve strani .print.json poleg njih) | reports/*.report.txt |
AccessMacro | makri .macro.txt | macros/*.macro.txt |
AccessTable | sheme tabel .table.json | tables/*.table.json |
AccessTableData | podatki tabel .jsonl (z mapo <table>.files poleg) | data/*.jsonl |
AccessRelations, AccessReferences, AccessProperties | po ena datoteka | relations/relations.json, references.json, application/properties.json |
AccessAppModel, AccessRibbonModel, AccessNavPaneModel | po ena datoteka | application/app-model.json, ribbons/ribbon.json, navigation/navpane.json |
AccessRibbon, AccessImage, AccessTheme, AccessTexts | trakovi, slike, mape tem, datoteke z besedili | ribbons/*.xml, resources/images/*, themes/*, texts/*.json |
Pravila:
IncludeinExcludenavajata datoteke ali vzorce, več jih ločite s;, z nadomestnimi znaki MSBuild:?pomeni en znak,*poljubno število znakov znotraj imena datoteke ali mape,**poljubno število map. Velike in male črke niso pomembne. Osnovna mapa vzorca je mapa pred prvim nadomestnim znakom, priui\pages\*.form.txttorejui\pages.- Postavka zajame samo datoteke s pripono svoje vrste: pod
AccessFormvzorecui\pages\*zajame tamkajšnje datoteke.form.txt, ne pa nastavitev strani poročila poleg njih. - Vrsta brez postavk ostane na privzetem mestu. Projekt brez postavk izvornih datotek SDK prebere natanko tako kot doslej.
- Če postavka datoteko navede izrecno in jo zajame tudi vzorec druge postavke, datoteka pripada postavki, ki jo navaja. Če isto datoteko zajameta dva vzorca, je to napaka: datoteko izrecno navedite v eni postavki ali zožite vzorce.
checkin vsak ukaz, ki bere izvorne datoteke, kot napako javijo:- postavko, ki ne zajame nobene datoteke;
- datoteko s pripono objekta, tabele ali podatkov tabele pod
SourceRootali pod osnovno mapo vzorca, ki je ne zajame nobena postavka (datoteko, ki jo namerno izpustite, izključite zExclude); - dve datoteki z istim objektom.
- Map
build,obj,.gitin.vsv mapi projekta ter mape, ki jo navajaBaseOutputPath, SDK nikoli ne preišče. - Izvoz vsak objekt zapiše nazaj v datoteko, iz katere izvira. Nov objekt zapiše v
AccessDefaultFolder<Kind>; če ta ni nastavljena, v osnovno mapo prve postavke njegove vrste, sicer na njegovo privzeto mesto. - Poti v sporočilih (
check,roundtrip) so relativne glede na mapo projektne datoteke.
Opombe
- Česa ni v datoteki. Sklici (v prednostnem vrstnem redu) in lastnosti podatkovne zbirke (s tipi) so samostojne izvorne datoteke,
source/references.jsoninsource/application/properties.json, zato izvoz nikoli ne prepiše datoteke, ki jo ureja človek. - Drugi elementi. SDK bere samo zgornje lastnosti in postavke, vse drugo prepusti MSBuildu. Datoteka zato lahko vsebuje lastne lastnosti in elemente
Imports cilji MSBuild. - Pogoji. Skupina lastnosti SDK sprejme samo obliko
'$(Configuration)' == '<name>'; vsak drug pogoj je zavrnjen. V skupini konfiguracije SDK upoštevaAccde,AppModeinConnectionProfile; druga lastnost SDK tam (SchemaVersion,AssemblyName,SourceRoot,BaseOutputPath,DeliveryRoot,Configurations,TargetAccess,Template,Finish,Test,ControlBlocks,NeutralLanguage,AccessDefaultFolder<Kind>) je zavrnjena, lastne lastnosti pa SDK prepusti MSBuildu. Skupine postavk s postavkami SDK ne sprejmejo pogoja.
AppMode
Model aplikacije WKL Forms Object Library (application/app-model.json) za vsak način zahteva druge zagonske lastnosti:
razvoj (ACCDB), administracija (ACCDE v polni različici programa Access) in produkcija (ACCDE v Access Runtime) – v
produkciji na primer brez tipke za obhod in brez posebnih tipk. Aplikacija jih popravi sama, ko ob zagonu pokliče
EnsureApplication. Z AppMode jih gradnja takoj zapiše v ACCDE, tako da je izdana datoteka pravilna že ob
prvem odprtju, še preden se izvede kakršna koli koda. AppIcon se iz ACCDE odstrani, ker navaja datoteko na
računalniku za gradnjo; aplikacija ob prvem zagonu zapiše ikono uporabnikovega računalnika. ACCDB ostane razvojna
podatkovna zbirka. check zavrne neznan način in opozori, kadar izvorne datoteke ne vsebujejo modela aplikacije ali
konfiguracija ne izdela ACCDE.
Predloge
Objekti, tabele (z njihovimi pravilniki), relacije, sklici in lastnosti predloge se pridružijo tistim iz aplikacije.
Izvorna datoteka aplikacije nadomesti istoimensko datoteko predloge; sklici aplikacije so prvi; lastnost aplikacije ima
prednost. Tema, modeli in zaključna funkcija pridejo iz predloge, če jih aplikacija nima. Predloga, ki sama navaja
predlogo, je zavrnjena. export ne zapiše ničesar, kar prispeva samo predloga; če želite objekt predloge spremeniti za
eno aplikacijo, njegovo datoteko kopirajte med izvorne datoteke aplikacije.
Predloge, na kateri gradi več aplikacij, ne hranite v repozitoriju aplikacije: v <Template> vpišite ime mape
predloge, v spremenljivko okolja WKL_ACCESS_TEMPLATES pa mapo, v kateri je (več map ločite z ;). Nova različica
predloge tako pride z naslednjo gradnjo.
Zaključna funkcija
Gradnja jo izvede z Application.Run po modelih, pred zadnjim prevajanjem in izdelavo ACCDE, za korake, ki jih SDK ne
pozna (na primer polnjenje tabel Generated). Ob uspehu vrne "" ali "OK"; vsako drugo besedilo ustavi gradnjo s
tem besedilom. Napaka, ki je funkcija ne obravnava, odpre pogovorno okno VBA za napako med izvajanjem, ki ga gradnja
prekliče in sporoči. Izvaja se lahko največ 5 minut; potem SDK skriti Access gradnje konča in gradnja ne uspe. Funkcijo zato napišite kot
pomožno funkcijo za avtomatizacijo: vse napake naj obravnava sama in namesto sprožene napake vrne besedilo. check zavrne ime, ki ni javna funkcija standardnega modula.
Preizkusna funkcija
wkl-office test jo pokliče z Application.Run v skritem programu Access, ki ga zažene za izvajanje preizkusov. Vrne imena preizkusnih postopkov – javnih
postopkov (Sub ali Function) standardnih modulov brez argumentov – kot polje (Array("Orders_Create", "Orders_Delete"))
ali kot besedilo z imeni, ločenimi z vejicami. Projekt, ki navede preizkusno funkcijo, ob vsaki gradnji dobi preizkusni
modul WklTest iz SDK, tudi če ga izvorne datoteke nimajo; modul WklTest v izvornih datotekah se vedno nadomesti z
modulom iz SDK, naslednji izvoz pa ga zapiše v izvorne datoteke. check zavrne ime, ki ni javna funkcija
standardnega modula. Glejte Preizkušanje aplikacije.
Ograde za kontrolnike WKL
Pravokotnik v obrazcu, katerega Tag je wkl:<Kind> (wkl:Grid, wkl:ActionBar …), se ob nalaganju obrazca
nadomesti z gradnikom kontrolnika <Kind>.control.txt, z imenom, položajem, velikostjo in sidri pravokotnika. Paket
izdaje WKL Forms Object Library gradnike prinaša v mapi control-blocks. check navede vsako ogrado, katere gradnik
manjka. Izvoz obrazec zapiše s kontrolnikom, zato njegova izvorna datoteka ograde ne potrebuje več.
Primer kode
Konfiguracija izdaje, ki izdela produkcijsko ACCDE in tabele poveže s produkcijskim profilom:
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> <Accde>true</Accde> <AppMode>Production</AppMode> <ConnectionProfile>PROD</ConnectionProfile> </PropertyGroup>
wkl-office build Stranke.acproj -c Release
Sorodne teme
- Projektna mapa – katera datoteka je kje in kaj je pod nadzorom različic
- Konfiguracije gradnje in profili izdaje – kaj določa konfiguracija in kaj profil