Kopiowanie do katalogu wyjściowego kopiuje strukturę folderów, ale chce kopiować tylko pliki
Mam VS2008 I chcę skopiować pewne pliki z katalogu do mojego folderu /bin/
. Ustawiłem pliki (znajdujące się w /common/browserhawk/
) na "Kopiuj do katalogu wyjściowego". Jednak kopiuje również strukturę folderów: pliki są kopiowane do /bin/common/browserhawk/
Jak mam skopiować te pliki do /bin/
? Nie chcę przechowywać ich w katalogu głównym witryny, aby je poprawnie skopiować.
Podobne pytanie: Visual Studio dodaje .dll i .pdb do projektu po kompilacji
8 answers
Możesz dodać zdarzenie post Build, aby skopiować pliki.
Przejdź do właściwości projektu, Zakładka Build Events i dodaj do wiersza poleceń zdarzenia po zbudowaniu:
copy "$(ProjectDir)\common\browserhawk\*.*" "$(TargetDir)"
Pamiętaj, aby dołączyć cudzysłowy, jeśli ścieżka projektu zawiera spacje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-23 14:42:31
Ponieważ nie mogę skomentować poprzednich odpowiedzi, umieszczę rozwiązanie tutaj:
Dodając do tego, co dodał @PaulAlexander, Dodaj do swojego .csproj/plik vbproj:
<ItemGroup>
<AvailableItemName Include="RootContent">
<Visible>false</Visible>
</AvailableItemName>
</ItemGroup>
<Target Name="AfterBuild">
<Copy
DestinationFolder="$(OutputPath)"
SourceFiles="@(RootContent)"
SkipUnchangedFiles="true"
/>
</Target>
To pozwala wybrać" RootContent " jako akcję budowania w oknie Właściwości, a wszystkie są dostępne za pośrednictwem interfejsu graficznego. Bardziej kompletne wyjaśnienie: opcja "AvailableItemName" zasadniczo tworzy nową listę nazw, do której można przypisać elementy w projekcie pod właściwością" Build Action " w okno Właściwości. Następnie możesz użyć tej nowo utworzonej listy w dowolnym celu (np. poprzez " @(RootContent)").
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-01 19:20:43
Jeśli edytujesz .csproj / vbproj w edytorze tekstowym możesz kontrolować, gdzie plik jest umieszczony w katalogu wyjściowym, a także jaką nazwę będzie miał plik w katalogu wyjściowym. Na przykład:
<None Include="content\someContent.txt">
<Link>someContentInOutputDirectory.txt</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Spowoduje to umieszczenie pliku content\someContent.txt
w bin\someContentInOutputDirectory.txt
. Możesz również wybrać podkatalog w bin
, Jeśli chcesz; po prostu dodaj go do elementu Link.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 18:18:54
Uważam, że polecenie XCOPY lepiej radzi sobie z katalogami i plikami. Dlatego
XCOPY "$(ProjectDir)common/browserhawk" "$(TargetDir)" /E /I /F /Y
Który pozwala na tworzenie folderów poza katalogiem docelowym.
XCOPY "$(ProjectDir)Templates" "$(TargetDir)" /E /I /F /Y
Struktura folderów/plików projektu:
A:\TEMP\CONSOLEAPPLICATION3\TEMPLATES
├───NewFolder1
├───NewFolder2
│ TextFile1.txt
│ TextFile2.txt
└───NewFolder3
TextFile1.txt
TextFile2.txt
TextFile3.txt
Staje się:
A:\TEMP\CONSOLEAPPLICATION3\BIN\DEBUG
│ ConsoleApplication3.exe
│ ConsoleApplication3.pdb
│ ConsoleApplication3.vshost.exe
│ ConsoleApplication3.vshost.exe.manifest
├───NewFolder1
├───NewFolder2
│ TextFile1.txt
│ TextFile2.txt
│
└───NewFolder3
TextFile1.txt
TextFile2.txt
TextFile3.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-30 20:48:20
Dodaj do swojego .csproj/plik vbproj
<Target Name="AfterBuild">
<Copy
DestinationFolder="$(OutputPath)"
SourceFiles="@(RootContent)"
SkipUnchangedFiles="true"
/>
</Target>
Następnie zmień akcję budowania dowolnych plików w folderze głównym na RootContent.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-29 15:54:21
Używałem tego w VS2010 i VS2015. Wolę takie rozwiązanie ponieważ:
- XML jest wielokrotnego użytku w dowolnym projekcie "RootContent" jest wybierany jako Akcja budowania w interfejsie Visual Studio, podobnie jak każda inna "zawartość".]}
- " CopyToOutputDirectory " jest przestrzegany, tak jak można się spodziewać
- RootContent jest dodawany do wyjścia projektu: jest przenoszony przez odniesienia do projektu, jest "czysty", itp.
- RootContent może być określony za pomocą symbolu wieloznacznego, zachowanie rekurencyjnej struktury folderów:
<RootContent Include="common\browserhawk\**"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </RootContent>
W kierunku początku pliku projektu:
<ItemGroup>
<AvailableItemName Include="RootContent">
<!-- Add "RootContent" as a choice in the "Build Action" dropdown. -->
<Visible>False</Visible>
</AvailableItemName>
</ItemGroup>
Po Microsofcie .import celów:
<PropertyGroup>
<AssignTargetPathsDependsOn>
$(AssignTargetPathsDependsOn);
IncludeRootContentAsContent;
</AssignTargetPathsDependsOn>
</PropertyGroup>
<Target Name="IncludeRootContentAsContent">
<CreateItem Include="@(RootContent)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(Extension)">
<Output ItemName="ContentWithTargetPath" TaskParameter="Include" />
</CreateItem>
</Target>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:05
W końcu dodałem krok do pliku nant do skopiowania po pomyślnym spełnieniu
<target name="action.copy.browserhawk.config" depends="compile.source">
<copy todir="${App.Web.dir}/bin/" includeemptydirs="false">
<fileset basedir="${browserhawk.config.dir}">
<include name="bhawk_bb.dat" />
<include name="bhawk_sp.dat" />
<include name="browserhawk.properties" />
<include name="maindefs.bdd" />
<include name="maindefs.bdf" />
<include name="BH_PRO.lic" />
</fileset>
</copy>
<echo message="COPY BROWSERHAWK CONFIG: SUCCESS ${datetime::now()}" />
</target>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-18 19:36:24
Możesz zbudować plik wsadowy, aby skopiować pliki i wykonać go jako zdarzenie post-build.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-18 18:18:52