Điểm đầu tiên có thể được giải quyết bằng trình soạn thảo văn bản đơn giản có thể xử lý nhiều tệp cùng một lúc và tìm/thay thế. Chỉ cần mở tất cả các csproj bạn trong đó và thay thế chuỗi <Compile Include="Properties\AssemblyInfo.cs" />
với
<Compile Include="..\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
Hoặc bạn có thể viết một tiện ích như thế:
var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories);
foreach (var f in files) {
string contents = File.ReadAllText(f);
string result = contents.Replace("<Compile Include=\"Properties\\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :)
File.WriteAllText(f, contents);
}
Đối với câu hỏi thứ hai ... Bạn có thể có một cái nhìn tại Visual Studio custom project templates, nhưng tôi không chắc nó xứng đáng với những nỗ lực. Bạn nên IMO viết kiểm tra mà sẽ kiểm tra này để thay thế. Nó sẽ đơn giản hơn nhiều và kết quả thực sự gần như giống nhau.
UPD: Giới thiệu về cách viết kiểm tra để kiểm tra tệp giải pháp/dự án đối với một số quy tắc tùy chỉnh. Về cơ bản, định dạng sln/csproj đủ đơn giản để có thể phân tích cú pháp mà không cần nhiều nỗ lực. Vì vậy, nếu bạn muốn có SharedAssemblyInfo.cs
được liên kết vào mọi dự án - chỉ cần phân tích cú pháp của csproj và kiểm tra điều đó. Sau đó, đặt trình kiểm tra đó trong máy chủ xây dựng của bạn và chạy nó trên mỗi bản dựng. Hiện tại, chúng tôi có hệ thống như vậy đang hoạt động và tốn kém khoảng hai ngày để viết nhưng đã tiết kiệm cho chúng tôi nhiều hơn nữa (chúng tôi có các quy tắc phức tạp và dự án đa giải pháp hơn, vì vậy nó đáng giá).
Tôi sẽ không viết chi tiết về việc kiểm tra này ngay bây giờ (không phải là ngắn), nhưng tôi sẽ sớm viết bài đăng trên blog - hầu hết có thể cho đến cuối tuần này. Vì vậy, nếu bạn quan tâm - chỉ cần kiểm tra my blog sớm :)
UPD:Here.
Nguồn
2011-07-21 06:01:58
thực tế phổ biến là tạo độc đáo thông tin lắp ráp – VMAtm