Pertanyaan Cara mengatur jalur output dari beberapa proyek C # visual


Saya memiliki solusi yang berisi beberapa proyek # c dan saya ingin dapat mengatur jalur output dan properti lainnya pada semua proyek bersama dalam satu tempat. Lembar Properti (vsprops) tampaknya tidak dapat tersedia untuk proyek C # dan variabel $ (SolutionDir) diabaikan. Apakah ada metode lain untuk mengatur properti di beberapa proyek C #?

Memperbarui Dengan Mengikuti informasi dalam jawaban oleh Bas Bossink saya dapat mengatur jalur output dari beberapa proyek dengan membuat csproj umum dan mengimpornya ke dalam proyek individu. Beberapa poin lainnya:

  • Ketika membangun di Visual Studio jika perubahan dibuat untuk proyek umum, perlu untuk menyentuh / memuat ulang proyek apa pun yang mereferensikannya untuk perubahan yang akan diambil.
  • Setiap properti yang juga ditetapkan dalam proyek individu akan mengesampingkan properti umum.
  • Mengatur $ (SolutionDir) sebagai jalur output melalui Visual Studio UI tidak berfungsi seperti yang diharapkan karena nilai diperlakukan sebagai string literal daripada semakin meluas. Namun, Mengatur $ (SolutionDir) langsung ke file csproj dengan editor teks berfungsi seperti yang diharapkan.

32
2018-03-07 07:02


asal


Jawaban:


File csproj sudah merupakan file msbuild, ini berarti file csproj juga dapat menggunakan elemen impor seperti yang dijelaskan sini. Elemen impor adalah apa yang Anda butuhkan. Anda bisa membuat Common.proj yang berisi sesuatu seperti:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <OutputPath>$(SolutionDir)output</OutputPath>
    <WarningLevel>4</WarningLevel>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>

Anda dapat mengimpor Common.proj ini di setiap csprojs Anda, misalnya seperti:

<Import Project="..\Common.proj" />

Pernyataan impor harus mendahului tugas apa pun yang bergantung pada properti yang ditentukan dalam Common.proj

Saya harap ini membantu. Saya tidak dapat mengonfirmasi masalah Anda dengan variabel $ (SolutionDir) Saya telah menggunakannya berkali-kali. Namun saya tahu bahwa variabel ini tidak bisa diatur ketika Anda menjalankan perintah msbuild melalui commandline pada proyek tertentu yang terkandung dalam solusi. Ini akan diatur ketika Anda membangun solusi Anda di Visual Studio.


36
2018-03-07 20:58



Sayangnya, bit-bit informasi seperti jalur keluaran semuanya disimpan di dalam file * .csproj individu. Jika Anda ingin melakukan batch-update sejumlah besar dari mereka, Anda harus kembali ke semacam alat pembaruan teks atau membuat skrip untuk menyentuh masing-masing file tersebut.

Untuk hal-hal seperti ini (terapkan perubahan pada sekumpulan file teks sekaligus) Saya pribadi menggunakannya WildEdit oleh Helios Software - bekerja seperti pesona dan harganya terjangkau.

Tapi saya yakin ada banyak alternatif gratis di luar sana juga.


1
2018-03-07 08:42



Saya akan menyarankan Anda untuk menggunakan alat membangun seperti MSBuild atau NAnt yang akan memberi Anda lebih banyak fleksibilitas pada build Anda. Pada dasarnya idenya adalah untuk memulai membangun menggunakan (dalam banyak kasus) file build dikonfigurasi tunggal.

Saya pribadi akan merekomendasikan NAnt.

Anda bisa menemukan tutorial mengagumkan tentang NAnt di blog JP Boodhoo sini 


0
2018-03-07 07:10



Mengatur $(OutputPath) properti di lembar properti umum. Kemudian hapus entri itu di semua file proyek yang ingin Anda pengaruhi. Kemudian impor lembar properti itu ke semua proyek Anda.

Untuk ratusan proyek yang bisa sangat membosankan. Itulah mengapa saya menulis alat untuk membantu dengan ini:

https://github.com/chris1248/MsbuildRefactor


0
2018-03-19 17:29